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`

我正确地计算了每个类别的计数,但是在.没有 AD 的 where 子句类别中包含 AD_TABLE TYPE`='0' 之后,将被忽略。即使计数为 0,我也需要获取所有类别。

4

1 回答 1

1

尝试这个

    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`
于 2013-10-24T04:26:22.777 回答