这是我第一次真正使用MySQL ...
我遇到以下情况:
我得到了表A和B. A与B具有1:n的关系。 (B有一个指向A的外键列。)
我需要的结果:
A中的所有记录加上B中所有记录的计数相关 记录在A。
示例:
到目前为止我做了什么:
我创建了以下查询:
SELECT A.*, COUNT(*) AS B_count
FROM $db.A AS A JOIN $db.B AS B ON (A.id=B.A_id)
GROUP BY A.id
我的问题:
我创建的查询只返回A中的记录,这些记录中包含与B相关的记录(ON语句)
问题:
我还需要做些什么才能获得A中与B相关的0条记录的所有记录?
答案 0 :(得分:1)
要获得0计数的行,您必须使用LEFT join,如:
SELECT A.*, COUNT(B.id) AS B_count
FROM $db.A AS A LEFT JOIN $db.B AS B ON (A.id=B.A_id)
GROUP BY A.id
答案 1 :(得分:1)
USE LEFT JOIN
并计算B.id
,如果你没有匹配,你将获得null并且count将返回0
SELECT A.*, COUNT(B.id)
FROM TableA A
LEFT JOIN TableB B
ON A.id = B.id