【发布时间】:2012-02-09 21:43:37
【问题描述】:
我正在尝试在单个查询中显示 companyId=2 的类别计数,即使为 0:
categories
+--------+-----------+
| catId | catName |
+--------+-----------+
| 1 | cat1 |
| 2 | cat2 |
| 3 | cat3 |
products
+--------+-----------+---------------+---------+
| prodId | prodName | companyId | catId |
+--------+-----------+---------------+---------+
| 1 | prod1 | 2 | 1 |
| 2 | prod2 | 2 | 3 |
| 3 | prod3 | 1 | 3 |
SELECT c.catName, COUNT(p.catId) AS prod_catCount
FROM categories c
LEFT JOIN products p ON c.catId=p.catId
WHERE p.companyId=2
GROUP BY c.catId
这会导致:
+---------+---------------+
| catName | prod_catCount |
+---------+---------------+
| cat1 | 1 |
| cat3 | 1 |
我怎样才能使它导致:
+---------+---------------+
| catName | prod_catCount |
+---------+---------------+
| cat1 | 1 |
| cat2 | 0 | <-- Shows 0 count as well
| cat3 | 1 |
我以为左连接会解决这个问题,但事实并非如此。任何想法如何让它发挥作用?
【问题讨论】:
标签: mysql select join left-join categories