Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQL запрос Помогите

FAN7ASY Знаток (495), закрыт 9 месяцев назад
есть две таблицы Жанры-Ganre(поля: GanreName,Description) и Книги-Books(поля: Ganre,Namebook) GanreName является первичным ключем, а Ganre внешний и они связаны. Задача: Вывести все жанры для которых у вас нет книг. У меня есть один такой жанр, я не знаю как его получить, ясно, что нужно объединять таблицы, но получается это сделать только для тех полей которые есть там и там, что собственно противоречит задаче .
Select GanreName from books join genre on GanreName=Ganre вот так выводятся жанры для которых у меня ЕСТЬ книги, а мне нужно ровно противоположное, пробовал GanreName<>Ganre но не выходит, выдается бесконечное повторение жанров
Лучший ответ
Андрей Высший разум (425823) 4 года назад
Если через JOIN, то, например, так:

SELECT g.GanreName
FROM Ganre AS g
LEFT JOIN Books AS b
ON g.GanreName = b.Ganre
WHERE b.Ganre IS NULL
FAN7ASYЗнаток (495) 4 года назад
благодарю, а разве можно без join? ведь чтобы получить нужную информацию из одной таблицы нужно сделать проверку в другой..
Андрей Высший разум (425823) Да, в запросе должно быть задействовано две таблицы. Но сделать это можно разными способами: Можно через NOT IN (rкрайне НЕ рекомендуется), можно черед NOT EXISTS. А в более продвинутых, чем MySQL, СУБД для таких задач есть специальные конструкции: https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql?view=sql-server-2017
Остальные ответы
Похожие вопросы