2017-04-04 128 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

相關問題