Bonjour,
Je n'arrive pas à faire une jointure, je vous explique mon problème :
J'ai des tables :
USER : table utilisateur
MUSIC : contenant des chansons
MUSICSTATUS : représentant des statuts de chansons (lien simple avec clé étrangère)
COMMENT : table de commentaires associés à des musiques
READCOMMENT : table contenant une entrée pour chaque commentaire lu par un utilisateur
MUSICLIKE: une entrée par musique "likée" en fonction d'un utilisateur
------
Je souhaite simplement récupérer une liste de chansons avec le nombre de commentaires non-lus ainsi que le nombre de likes associés.
------
Première requête fonctionnelle comprenant le compte de commentaires non lus :
-------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT MUSIC.MUS_ID, MUS_TITLE, MUS_ARTIST, MUS_DATE, USER.USR_PSEUDO, USER.USR_ID, MUSICSTATUS.STAT_ID, (count(COMMENT.COM_ID) - count(READCOMMENT.COM_ID)) as MSG_UNREAD FROM MUSIC INNER JOIN USER ON USER.USR_ID = MUSIC.USR_ID INNER JOIN MUSICSTATUS ON MUSICSTATUS.STAT_ID = MUSIC.STAT_ID LEFT JOIN COMMENT ON MUSIC.MUS_ID = COMMENT.MUS_ID AND COMMENT.COM_DELETED = 0 LEFT JOIN READCOMMENT ON MUSIC.MUS_ID = READCOMMENT.MUS_ID AND READCOMMENT.USR_ID = ? WHERE MUSIC.STAT_ID = ? AND MUS_DELETED = 0 GROUP BY MUS_ID ORDER BY MUSIC.MUS_LASTUPDATE ASC, MUSIC.MUS_DATE
Autre requête qui n'est pas fonctionnelle, où j'ai essayé d'intégrer le nombre de likes en plus ainsi que le fait d'avoir soi-même liké ou pas (quand le nombre de likes est à 0, le champ prend la valeur de mon nombre de commentaires non-lus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT MUSIC.MUS_ID, MUS_TITLE, MUS_ARTIST, MUS_DATE, USER.USR_PSEUDO, USER.USR_ID, MUSICSTATUS.STAT_ID, (count(COMMENT.COM_ID) - count(READCOMMENT.COM_ID)) as MSG_UNREAD, count(ml1.ML_ID) as COUNT_MUSICLIKE, count(ml1.ML_ID) as I_LIKE FROM MUSIC INNER JOIN USER ON USER.USR_ID = MUSIC.USR_ID INNER JOIN MUSICSTATUS ON MUSICSTATUS.STAT_ID = MUSIC.STAT_ID LEFT JOIN COMMENT ON MUSIC.MUS_ID = COMMENT.MUS_ID AND COMMENT.COM_DELETED = 0 LEFT JOIN READCOMMENT ON MUSIC.MUS_ID = READCOMMENT.MUS_ID AND READCOMMENT.USR_ID = ? LEFT JOIN MUSICLIKE ml1 ON MUSIC.MUS_ID = ml1.MUS_ID LEFT JOIN MUSICLIKE ml2 ON MUSIC.MUS_ID = ml2.MUS_ID AND ml2.USR_ID = ? WHERE MUSIC.STAT_ID = ? AND MUS_DELETED = 0 GROUP BY MUS_ID ORDER BY MUSIC.MUS_LASTUPDATE ASC, MUSIC.MUS_DATE
Pouvez-vous m'aider ? Merci !
Partager