2013-10-24 14 views
0

我有具有以下結構的表。獲得由另一個表字段過濾的每個類別的計數

AD_TABLE -

   ID|NAME|CAT_ID|TYPE 
       1| car | C0101|Sale 
       2|bike | C0201|Want 

CAT_TABLE -

   ID |NAME   |PARENT|LEVEL 
       C0100|Vehicle  |C0100 | 0 
       C0101|Car   |C0100 | 1 
       C0200|Bike/Scooters |C0100 | 1 
       C0201|Bike   |C0200 | 2 
       C0202|Scooter  |C0200 | 2 

我需要從每個類別的廣告的數量,我寫了下面的查詢。

SELECT `CAT_TABLE`.`ID`,`CAT_TABLE`.`NAME`,`CAT_TABLE`.`LEVEL`,`CAT_TABLE`.`PARENT`, COUNT(`AD_TABLE`.`ID`) 
FROM `CAT_TABLE` 
LEFT JOIN `AD_TABLE` ON `AD_TABLE`.`CAT_ID`=`CAT_TABLE`.`ID` 
WHERE (`CAT_TABLE`.`ID`='C0100' OR `CAT_TABLE`.`PARENT`='C0100') AND `AD_TABLE`.`TYPE`='0' 
GROUP BY `CAT_TABLE`.`ID` 

我在沒有廣告被忽略的where子句類別獲得每個類別的計數正常,但包括AD_TABLE . TYPE` =後「0」。我需要把所有的類別,即使計數爲0

+0

,使用'COUNT(*)'。 –

+0

COUNT(*)無效。問題在於WHERE條件 - >'AD_TABLE'.'TYPE' ='0'。如果我把它排除在外,我可以正確地得到計數,但它也可以算作其他類型。 – codeGEN

回答

1

如果要算`NULL`s也試試這個

SELECT  `CAT_TABLE`.`ID`,`CAT_TABLE`.`NAME`,`CAT_TABLE`.`LEVEL`,`CAT_TABLE`.`PARENT`,  COUNT(`AD_TABLE`.`ID`) 
    FROM  `CAT_TABLE` 
    LEFT JOIN `AD_TABLE` 
    ON   `AD_TABLE`.`CAT_ID`=`CAT_TABLE`.`ID` 
    AND  `AD_TABLE`.`TYPE`='0' -- Write and here..<br/> 
    WHERE  (`CAT_TABLE`.`ID`='C0100' OR `CAT_TABLE`.`PARENT`='C0100') 
    GROUP BY `CAT_TABLE`.`ID` 
+0

這工作表示感謝。有沒有一種方法可以爲每個計數增加計數。例如:車輛數量應增加汽車和自行車/踏板車。而自行車/踏板車的數量應該是增加自行車和踏板車。 – codeGEN

相關問題