🔍 Ответ на задачу про SQL: LEFT JOIN + WHERE — скрытый баг 🐛
Однако условие
Вывод:
Чтобы сохранить поведение
#sql #leftjoin #where #bug #database #интервью #java_interview_tasks
LEFT JOIN гарантирует, что все строки из левой таблицы (customers) попадут в результат, даже если в правой таблице (products) нет совпадений — в этом случае столбцы правой таблицы заполняются NULL.Однако условие
WHERE p.status = 'SHIPPED' отфильтровывает все строки, где p.status IS NULL. Это означает, что клиенты без заказов будут исключены из результата, и LEFT JOIN фактически превратится в INNER JOIN.Вывод:
WHERE по правой таблице превращает LEFT JOIN в INNER JOIN.Чтобы сохранить поведение
LEFT JOIN, условие фильтрации нужно перенести в ON:SELECT c.NAME,
p.product_id
FROM customers c
LEFT JOIN products p
ON c.id = p.customer_id
AND p.status = 'SHIPPED';
#sql #leftjoin #where #bug #database #интервью #java_interview_tasks
🔥4👍2👎2