Используйте NOT EXISTS: выберите жанры, для которых нет связанной строки книги. Таблица авторов для этой проверки не нужна, если связь книги с жанром хранится непосредственно.
Определение жанров, не представленных в коллекции книг
Используйте NOT EXISTS: выберите жанры, для которых нет связанной строки книги. Таблица авторов для этой проверки не нужна, если связь книги с жанром хранится непосредственно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В базе данных присутствуют таблицы genre_tbl (жанры), authors (авторы) и books_tbl (книги). Сформулируйте SQL‑запрос, который вернёт перечень всех жанров из таблицы genre_tbl, которые не встречаются ни в одной записи таблицы books_tbl.
Ответ
Используйте NOT EXISTS: выберите жанры, для которых нет связанной строки книги. Таблица авторов для этой проверки не нужна, если связь книги с жанром хранится непосредственно.
При предполагаемых полях genre_tbl.id и books_tbl.genre_id:
SELECT g.*
FROM genre_tbl g
WHERE NOT EXISTS (
SELECT 1 FROM books_tbl b
WHERE b.genre_id = g.id
);
Названия ключей в условии не заданы и требуют адаптации. При many-to-many проверяют таблицу связи вместо прямого genre_id. NOT EXISTS не сталкивается с ловушкой NULL, характерной для NOT IN с nullable-подзапросом.