Mam tabelę pozycji i mam oddzielną tabelę zawierającą indywidualne zakupy każdego elementu. Nie każdy przedmiot został kupiony. Ja wybierając liczbę zakupów i łączenia go z tabelą elementów z oświadczeniem podobny do następującego:Ustawianie domyślnej wartości kolumn NULL od LEWEGO DOŁĄCZENIA i filtrowanie przy użyciu 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
Powoduje danych podobnych do:
+------+-----------------+
| name | purchases_count |
|------+-----------------+
| Shoe | 12 |
| Belt | NULL |
+------+-----------------+
Mój problem pojawia się, gdy chcę, aby filtrować ten wynik na purchases_count
. Jeśli używam WHERE purchases_count < 10
lub czegoś podobnego, przedmioty bez rekordu sprzedaży w ogóle (tj. O wartości NULL
) są wykluczone z wyszukiwania.
Podjęto próbę użycia COALESCE(purchases_count,0) AS purchases_count
, która poprawnie ustawia zapisy NULL
na 0, ale nadal nie są wyświetlane podczas korzystania z WHERE
. Podejrzewam, że COALESCE
dzieje się po WHERE
.
Chciałbym móc filtrować na ten numer przy użyciu WHERE
i dołączyć wyniki NULL
(w postaci zer), jeśli to możliwe. Jakieś sugestie?
'alias' z LEFT JOIN tabeli jest taka sama jak nazwa tabeli, jest to dobra praktyka ?? – diEcho
Zapytanie SQL zostało uproszczone, aby skupić się na pytaniu, rzeczywisty SQL różni się od tego. –