我有3个表Products,Order,Order_Placed
Products---------- Order---------------- Order_Placed
________________________________________________________
prod_id | -------| order_id | -------| prod_id |order_id|
1000----------------2001-------------------1000|2001
1001----------------2002-------------------1000|2002
1002--------------- 2003------------------1001|2001
所以我的查询是这样的:
select P.Prod_ID, COUNT(*)
from PRODUCTS P
LEFT JOIN ORDER_PLACED OP
ON P.PROD_ID= OP.PROD_ID
group by ....
所以结果应该是:
Prod_Id Count(*)
1001 2
1002 1
1003 0
答案 0 :(得分:2)
不。 count(*)
永远不会返回0
。它不返回任何内容(根本没有行)或至少返回1.
你想:
select P.Prod_ID, COUNT(OP.PROD_ID)
from PRODUCTS
LEFT JOIN ORDER_PLACED OP
ON P.PROD_ID= OP.PROD_ID
group by ....
注:
尝试在我的回复中添加限定符。但count(*)
在0
的任何情况下都无法返回group by
。零意味着组中没有行。而这反过来意味着输出中没有行。如果没有为全局聚合选择任何行,则它可以返回0
。