0
私は、単一のクエリ内の企業ID = 2のために、しても0の場合、カテゴリ数を表示しようとしている: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 |
私はそれの世話をするだろう左が参加思ったが、それはしませんでした。どのようにこれを動作させるための任意のアイデアですか?
はそう単純で、単に切り替える
ON
句にWHERE
句から移動p.companyId=2
WHEREとAND :)おかげで外部結合を使用するときに一般的な間違いですウォーカー – Maverick。オプションテーブルの条件をON句に入れる必要があります。そうでない場合は、外部結合を無効にします。 –