7. Вывести ID классов, в которых нет студентов
Условие задачи:
Даны две таблицы:
student— студенты;class— классы.
Необходимо вывести id классов, в которых нет ни одного студента.
Ограничение: нельзя использовать подзапросы.
Код:
student
id INT PRIMARY KEY
class_id INT
class
id INT PRIMARY KEY
Спойлеры к решению
Подсказки
💡 Используй
💡 Если для класса нет соответствующего студента, поля таблицы
💡 Остаётся отфильтровать такие строки через
LEFT JOIN, чтобы сохранить в результате все классы.💡 Если для класса нет соответствующего студента, поля таблицы
student будут содержать NULL.💡 Остаётся отфильтровать такие строки через
WHERE.Решение
SELECT c.id
FROM class c
LEFT JOIN student s
ON s.class_id = c.id
WHERE s.id IS NULL;
LEFT JOIN возвращает все классы, в том числе те, для которых нет совпадений в таблице student.
Для таких классов s.id будет равен NULL, поэтому условие:
WHERE s.id IS NULL
оставляет только классы без студентов.
Подзапросы в решении не используются.