2013-04-11 61 views
0

我想统计表股票中的所有项目,也是空的。 但我只能显示完整的,我尝试了几个啧啧,但它没有工作。MySQL加入空统计

表产品:

  • ID
  • 状态

表股票:

  • ID
  • PID(产品ID)
  • 状态

我的MySQL查询:

SELECT p.id , COUNT(p.id) AS pcount 
FROM products p 
LEFT JOIN stock s ON p.id = s.pid 
WHERE s.status=1 
    AND p.status=1 
GROUP BY p.id  
ORDER BY pcount 

,愿你有什么毛病的逻辑,因为空股票s.status决不会1 ...但是不要落后.. 我可能需要OUTER JOIN还是类似的?

感谢您的帮助!

回答

0

通过添加WHERE s.Status = 1把您查询到INNER JOIN。将该条件移动到LEFT JOIN部分

SELECT 
     p.id, 
     COUNT(s.pid) AS pcount 
    FROM 
     products p 
     LEFT JOIN stock s 
      ON p.id = s.pid 
      AND s.status = 1 
    WHERE 
     p.status = 1 
    GROUP BY 
     p.id  
    ORDER BY 
     pcount 
+0

正是这个问题。我搜索了几个小时,并在这里得到答案。非常感谢! – user2270134 2013-04-11 12:50:39

0

如果你只是要算在股票行指各产品的数量,试试这个:

SELECT p.id , COUNT(s.id) AS pcount 
FROM products p 
LEFT JOIN stock s ON p.id = s.pid 
WHERE s.status=1 
AND p.status=1 
GROUP BY p.id  
ORDER BY pcount 
+0

这看起来差不多相同的输出,它计数行数,但空行不计数。或者至少没有设置pcount .. – user2270134 2013-04-11 12:30:18

+0

什么是你的空行?一条没有股票的线? – JoDev 2013-04-11 12:43:57

+0

是的,空股票的意思是。但问题解决了。不管怎么说,还是要谢谢你! – user2270134 2013-04-11 12:51:31