2017-04-04 131 views
-1

各自的量这是我第一次真正使用MySQL的...选择从所有记录,并从B及其相关记录在MySQL

我得到了以下情况:

我表A和B. A与B有1:n的关系。 (B有一个指向A的外键列)。

结果我需要:

在A所有记录加在B的所有记录的计数A.相关的各个 记录

例子:

Example

我到目前为止所做的:

我创建以下查询:

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

以文本形式发布表格和数据[阅读此](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when - 问题/ 285557#285557) –

回答

1

使用LEFT JOIN和计数B.id,如果你不拿到赛,你将有无效和计数将返回0

SELECT A.*, COUNT(B.id) 
FROM TableA A 
LEFT JOIN TableB B 
    ON A.id = B.id 
+0

接受的答案,因为这也解决了A中记录4的B_count = 1的问题 – Benjamin

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 
+0

谢谢。计数(*)导致了表A中记录4的B_count为1而不是0的问题。解决此问题后,它现在按预期工作。 – Benjamin

+0

@Benjamin nope,你误解了答案和问题 –

+0

好吧,所以我认为*代表所有列(也是那些不是空的),所以它被视为一个? – Benjamin