0
我想顯示分類計數,即使0,對於companyId = 2在一個單一的查詢公司數:MySQL的展示類和他們在一個查詢
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 |
我以爲左連接會照顧這一點,但是事實並非如此。任何想法如何讓這個工作?
如此簡單,只需切換WHERE與AND :)謝謝沃克 – Maverick 2012-02-09 21:54:08
這時候使用外連接的是一個常見的錯誤。您需要將可選表中的任何條件放入ON子句中,否則它將取消外部連接。 – 2012-02-09 22:00:49