2012-01-16 56 views
2

我有一個表:MySQL的兩個表計數和顯示

ogloszenie 
Id | id_kat 
1 1 
2 2 
3 1 
4 1 
... 


kategoria 
Id_kat | Name 
1  Test1 
2  Test2 
3  Tesy3 
4  Test4 
... 

我的查詢:

SELECT kategoria.Name, count(ogloszenie.Id_kategoria) AS ile 
FROM ogloszenie INNER JOIN kategoria ON ogloszenie.id_kat = kategoria.Id_kat 
GROUP BY kategoria.Id_kat; 

當我運行此查詢只顯示行,其中id_kat在表 'ogloszenie'

Test1 3 
Test2 1 

我需要顯示:

Test1 3 
Test2 1 
Test3 0 
Test4 0 
+0

你需要了解不同類型的加盟 - 和INNER JOIN意味着值必須兩個表 – 2012-01-16 03:18:26

回答

0
SELECT kategoria.Name, 
     COUNT(ogloszenie.Id_kat) as iCount 
FROM kategoria left join ogloszenie 
     ON kategoria.Id_kat = ogloszenie.Id_kat 
GROUP BY kategoria.Name 
+0

這是確定的存在。謝謝 – Pitu 2012-01-16 03:31:12

0
SELECT kategoria.Name, count(IFNULL(ogloszenie.Id_kategoria, 0)) AS ile 
FROM kategoria 
LEFT JOIN ogloszenie ON ogloszenie.id_kat = kategoria.Id_kat 
GROUP BY kategoria.Id_kat; 

LEFT JOIN意味着你採取kategoria的ID爲基礎,而不是那些的ogloszenieId_kat的。

要麼,

FROM ogloszenie 
RIGHT JOIN kategoria ...