Вот пример:
SELECT b.title
FROM ( SELECT g.book_id
FROM genres g
GROUP
BY g.book_id
HAVING COUNT(1) > 1
) m
JOIN book b
ON b.id = m.book_id
Встроенное представление m
предназначено для возврата значений book_id
, которые появляются более одного раза в таблице genres
.В зависимости от ограничений уникальности нам может потребоваться подсчитать различные значения genre
HAVING COUNT(DISTINCT g.genre) > 1
, если мы хотим найти книги точно с тремя родственными жанрами:
HAVING COUNT(DISTINCT g.genre) = 3
Как только мы получимсписок book_id
значений, мы можем присоединиться к таблице book
.(Запрос предполагает, что book_id
в genres
является ссылкой внешнего ключа на столбец id
в таблице book
.)