Вступить в клуб →
лёгкаявопросSQL и оптимизация запросов

Условие по правой таблице в WHERE после LEFT JOIN

Вы собираете витрину «клиенты и их оплаченные заказы». По требованию аналитиков в витрине должны быть все клиенты, включая тех, у кого оплаченных заказов нет.

SELECT c.client_id, o.order_id
FROM dds.clients c
LEFT JOIN dds.orders o ON o.client_id = c.client_id
WHERE o.status = 'paid';

Что фактически вернёт этот запрос?

  • Всех клиентов: у тех, кто без оплаченных заказов, order_id будет NULL.
  • Всех клиентов и все их заказы: фильтр по статусу повлияет только на значение order_id.
  • Только клиентов с хотя бы одним оплаченным заказом: строки-«пустышки» от LEFT JOIN отсекаются условием в WHERE.
  • Ошибку выполнения: колонку правой таблицы нельзя использовать в WHERE после LEFT JOIN.

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела