2013-04-02 46 views
8

我有數據此表結構:的MySQL在同一個表,包括零計數計數值

INSERT INTO `test` (`id`, `email`, `id_user_ref`, `name`) VALUES 
(1, '[email protected]', NULL, 'Mike'), 
(2, '[email protected]', '1', 'Jhonny'), 
(3, '[email protected]', '1', 'Michael'), 
(4, '[email protected]', '2', 'Jorhe'), 
(5, '[email protected]', '3', 'Mia'); 

我需要計算與該查詢所有用戶id_user_ref:

SELECT id, COUNT(name) AS refNr FROM test GROUP BY id_user_ref 
HAVING id_user_ref IS NOT NULL; 

這工作,但問題是即使計數結果爲0,我也需要顯示所有結果。

我嘗試了幾次左連接,但沒有任何成功。

輸出應該是:

id refNr 
1 2 
2 1 
3 1 
4 0 
5 0 
+0

要數邁克有多少用戶被邀請?那麼你將遇到從表格到它本身的內部連接:-) – Najzero

+0

你想從這個查詢中獲得想要的輸出是什麼? –

+0

我需要知道如何爲每個人有多少人有自己的ID參考0 –

回答

12

試試這個:

SELECT 
    t1.id, 
    IFNULL(COUNT(t2.name), 0) AS refNr 
FROM test AS t1 
LEFT JOIN test AS t2 ON t1.id = t2.id_user_ref 
GROUP BY t1.id; 

SQL Fiddle DEmo

這會給你:

| ID | REFNR | 
-------------- 
| 1 |  2 | 
| 2 |  1 | 
| 3 |  1 | 
| 4 |  0 | 
| 5 |  0 | 
+0

完美無缺,謝謝。 –

+1

@DspMarian - 隨時歡迎您:) –

+0

'ON t1.id = t2.id_user_ref'對我來說沒有任何意義。這些列是相同的!? – C4u