简体   繁体   English

获取由另一个表的字段过滤的每个类别的计数

[英]getting count of each category filtered by another table's field

I have tables with the following structure. 我有具有以下结构的表。

AD_TABLE - AD_TABLE

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

CAT_TABLE - 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

I need to get the count of ADs from each category, I have written the following query. 我需要获取每个类别的广告数量,我编写了以下查询。

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`

I got the count of each categories properly but after including the AD_TABLE . 我正确地获得了每个类别的数量,但包括了AD_TABLE之后. TYPE`='0' in the where clause categories which do not have ADs were ignored. 没有AD的where子句类别中的TYPE` ='0'被忽略。 I need to get all the categories even if the count is 0. 即使计数为0,我也需要获取所有类别。

try this 尝试这个

    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`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM