Вывести id классов, у которых нет ни одного студента (без подзапросов)?

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

оставляет только классы без студентов.

Подзапросы в решении не используются.