@pacan4ik

Как правильно разбить на подзадачи этот запрос?

Есть SQL запрос, который найдет и выведет всех читателей, возраста от 7 и до 17 лет, которые взяли только 2 книги и все книги одного и того же автора.

Начал писать запрос с лева на право, но как-то запутался
SELECT users.name
FROM users
JOIN user_books ON users.id = user_books.user_id
WHERE users.age BETWEEN 7 AND 17;

А с мыслями, как дальше писать WHERE, куда мне нужно как-то засунуть COUNT и сравнение авторов, пока не очень пойму.
Подскажите, как мне правильно разбить этот запрос на более простое понимание, как правильно его писать?

61557ee70e544288724794.jpeg
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
SELECT 
	users.name, 
	COUNT(books.id) books_count, 
	COUNT(DISTINCT books.author) authors_count
FROM users
JOIN user_books ON users.id = user_books.user_id
JOIN books ON books.id = user_books.book_id
WHERE users.birth_year BETWEEN 2004 AND 2014
GROUP BY users.name
HAVING books_count = 2 AND authors_count = 1;


SQL fiddle
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы