So I’ve got a database with 4 tables: artist, genre, track and album. Track table points in a many to one way to Genre table, and so on with Track to Album, and Album to Artist.
Suppose I want to find every genre that ‘John Coltrane’ plays, so I thought about saying
SELECT DISTINCT Artist.name, Genre.name FROM Artist JOIN Genre JOIN Album JOIN Track WHERE Artist.name = 'John Coltrane' AND Track.genre_id = Genre.genre_id
But this just gives me
i.e. ALL genres jointed to John Coltrane, instead of just ‘Jazz’ which is what I’m seeking…
Why is it not working?
Advertisement
Answer
Since you didn’t show all the table columns which would be used to join tables together. I will make some assumptions for you. I will be more accurate if I notice that you updated the topic and I will update my answer when I see it. Where I am incorrect about the column name that I join on just substitute the actual column with the one I put here and it will do what you are trying to do. 😉
SELECT DISTINCT ART.name, Genre.name FROM Artist ART JOIN Album ALB ON ART.artist_id = ALB.artist_id JOIN Track TRK ON ALB.album_id = TRK.album_id JOIN Genre G ON TRK.genre_id = G.genre_id WHERE ART.name = 'John Coltrane'