我在数据库中有2个表。我使用以下查询:
Select U.id, U.ad, COUNT(B.id) AS 'total'
FROM tblProducts U
INNER JOIN TblBasvurular B ON B.urunid=U.id
GROUP BY u.id,u.ad
这告诉我
id | productname | total
-------------------------------
1 | bread | 2
2 | water | 3
3 | milk | 1
但我看不到其他产品。如果不存在,它不会告诉我其他人。
我怎样才能得到这样的结果:
id | productname | total
-------------------------------
1 | egg | 0
2 | bread | 2
3 | water | 3
4 | tea | 0
5 | milk | 1
答案 0 :(得分:3)
您没有指定您的RDBMS,但假设它是SQL Server:
select U.id, U.ad, COUNT(ISNULL(B.id, 0)) as 'total'
from tblProducts U
left join TblBasvurular B on B.urunid = U.id
Group by u.id, u.ad
答案 1 :(得分:1)
目前尚不清楚,因为你没有向我们展示第二张桌子。 但是尝试在查询中将内部联接更改为左联接:
select
U.id,
U.ad,
COUNT(B.id) as 'total'
from tblProducts U
left join TblBasvurular B on B.urunid=U.id
Group by u.id,u.ad
答案 2 :(得分:0)
使用LEFT JOIN:
select U.id,U.ad,COUNT(B.id)as 'total'
from tblProducts U LEFT join TblBasvurular B on B.urunid=U.id
Group by u.id,u.ad
如果是Oracle,那么试试这个:
select U.id,U.ad,NVL(COUNT(B.id),0) as 'total'
from tblProducts U LEFT join TblBasvurular B on B.urunid=U.id
Group by u.id,u.ad
这将显示0而不是NULL。
如果是SQL Server,请使用ISNULL而不是NVL;如果是MySQL,请使用IFNULL。
对于所有这些RDBMS,函数coalesce
都有效。