Skip to content
Advertisement

Need a MySQL Query out of this diagram

I’d like a query that shows me the tracks that a user doesn’t have in his playlist. The only parameter I’ll be getting is the username of a user.

Is that possible with this diagram? If so, could you provide me with a query?

Database Diagram

I’ve tried a query, but not so succesfull.

SELECT * FROM TRACK 
INNER JOIN USER u on u.ID = TRACK.USERID
INNER JOIN Playlist p on p.TrackID = TRACK.ID
WHERE (u.ID IN (SELECT UserID FROM Playlist WHERE UserID = (SELECT ID FROM User WHERE username = 'Arjan')))
AND (TRACK.ID NOT IN (SELECT ID FROM TRACK))

Not sure what’s missing here. Maybe I’m just thinking too complicated.

Advertisement

Answer

I didn’t get a chance to try it out actually. But your query should be something like this one —

Declare @UserName varchar(255)
Set @UserName = N'Arjun'

SELECT U.ID
    ,U.UserName
    ,P.ID
    ,T.Id
    ,T.TrackUrl
    ,T.CreationDate
FROM TRACK T
INNER JOIN USER U ON U.ID = T.UserID
LEFT JOIN Playlist P ON P.TrackID = T.ID
    AND P.UserID = U.ID
WHERE U.ID IN (
        SELECT DISTINCT ID
        FROM User
        WHERE UserName = @UserName
        )
    AND P.ID IS NULL;
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement