Установка значения по умолчанию для столбцов NULL из LEFT JOIN и фильтрация с помощью WHERE

У меня есть таблица товаров и отдельная таблица, содержащая отдельные покупки каждого товара. Не все товары были куплены. Я выбираю количество покупок и объединяю его с таблицей items с помощью оператора, подобного следующему:

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), исключаются из поиска.

Я попытался использовать COALESCE(purchases_count,0) AS purchases_count, который правильно устанавливает NULL записи в 0, но они все равно не появляются при использовании WHERE. Я подозреваю, что COALESCE происходит после WHERE.

Я хотел бы иметь возможность фильтровать это число с помощью WHERE и включать NULL результаты (как нули), если это возможно. Есть предложения?

11
задан White Elephant 16 December 2011 в 17:44
поделиться