私はアイテムのテーブルを持っていますが、私は各アイテムの個別購入を含む別のテーブルを持っています。すべての商品が購入されたわけではありません。私は、購入数を選択し、次のような文を使用してアイテムテーブルとそれに参加しています:LEFT JOINからNULL列のデフォルト値を設定し、WHEREを使用してフィルタリングを行います
SELECT items.name, purchases_count
FROM `items`
LEFT JOIN (SELECT sales.item_name, SUM(unit_sales) AS purchases_count
FROM sales GROUP BY item_name) sales ON sales.item_name = items.uid
これはと同様のデータになり:
+------+-----------------+
| name | purchases_count |
|------+-----------------+
| Shoe | 12 |
| Belt | NULL |
+------+-----------------+
私はフィルタリングしたいときに私の問題が発生しましたこの結果はpurchases_count
にあります。 WHERE purchases_count < 10
などを使用すると、販売記録のない商品(つまり、NULL
値の商品)は検索対象から除外されます。
NULL
レコードを0に正しく設定したCOALESCE(purchases_count,0) AS purchases_count
を使用しようとしましたが、WHERE
を使用してもまだ表示されません。私はCOALESCE
がWHERE
の後に起こっていると思う。
可能であれば、WHERE
を使用してこの番号にフィルタをかけ、NULL
の結果を(ゼロとして)含めることができます。助言がありますか?
'左のalias'は、テーブルには、テーブル名と同じであることが良い方法です参加? – diEcho
SQLクエリーは質問に集中するために単純化されていますが、実際のSQLはこれとは異なります。 –