← Все новости

LEFT JOIN есть, а клиенты пропали: как WHERE меняет результат соединения

В отчёте должны быть все клиенты, включая тех, у кого нет оплаченных заказов. Запрос использует LEFT JOIN, загрузка проходит без ошибок, но часть клиентов всё равно исчезает.Причина может быть в одной строке: условие по правой таблице поставили в WHERE. А попытка исправить его через OR … IS NULL возвращает не всех, кого ожидали.Разберём учебный пример: четыре клиента, заказы в двух статусах и витрина с одной строкой на клиента. Посмотрим, где теряются строки, почему COUNT(*) показывает несуществующий заказ и как проверить не только сумму, но и состав результата. Все SQL-примеры ниже проверены в SQLite. Это пример логики данных, а не история из проекта. Разобрать пример