Я посещаю курс базы данных в своей школе. Учитель дал нам простое упражнение: рассмотрим следующую, простую схему:
Table Book:
Column title (primary key)
Column genre (one of: "romance", "polar", ...)
Table Author:
Column title (foreign key on Book.title)
Column name
Primary key on (title, name)
Среди вопросов было следующее:
Напишите запрос, который возвращает авторов, которые написали романтические книги.
Я предложил этот ответ:
select distinct name
from Author where title in (select title from Book where genre = "romance")
Однако учитель сказал, что это неправильно, и что правильный ответ был:
select distinct name
from Book, Author
where Book.title = Author.title
and genre = "romance"
Когда я попросил объяснений, все, что у меня было, было "если бы вы больше внимания уделяли курсу, который вы бы знали, почему". Brilliant.
Итак, почему мой ответ неверен? В чем разница между этими запросами? Что именно они делают, на уровне БД?