Прошу помогите с sql запросом для базы данных chinook.db

Суть запроса: Для каждого альбома определить все жанры песен, которые в нём есть и количество песен по каждому жанру (формат вывода: альбом, жанр, количество). Выводить только те альбомы, где жанров больше одного.

Ссылка на сайт с бд: https://www.sqlitetutorial.net/sqlite-sample-database/

Структура chinook.db:chinook.db

Я пробовал сделать разные sql запросы по типу:

SELECT
    a.Title AS AlbumTitle,
    g.Name AS Genre,
    COUNT(t.TrackId) AS NumberOfTracks
FROM (
    SELECT *
    FROM albums
    WHERE albumid IN (
        SELECT albumid
        FROM tracks
        GROUP BY albumid
        HAVING COUNT(DISTINCT genreid) > 1
    )
) a
JOIN tracks t ON a.albumid = t.albumid
JOIN genres g ON t.genreid = g.genreid;

или

SELECT
    a.Title AS AlbumTitle,
    g.Name AS Genre,
    COUNT(t.TrackId) AS NumberOfTracks
FROM
    Albums a
JOIN
    Tracks t ON a.AlbumId = t.AlbumId
JOIN
    Genres g ON t.GenreId = g.GenreId
GROUP BY
    AlbumTitle, Genre
HAVING COUNT(t.TrackId) > 1
ORDER BY
    Genre;

но ни один из этих запросов не выводит того, что требуется. Я не могу понять что не так ведь я задаю условие для количества жанров больше одного.

Необходимый результат это вывод таблицы с альбомами где жанров больше одного.


Ответы (1 шт):

Автор решения: SwaD

Должно получиться вот таким запросом:

select a.title, g.name, count(*)
from albums a
join tracs t on a.albumid = t.albumid
join genres g on t.genreid = g.genreid
group by a.title, g.name
having count(*) > 1

Не имея доступа к данным в БД, сделал аналог в песочнице

→ Ссылка