bonjour à tous et à toute,
voila, j'ai 3 tables : artiste, song, song_file
un artiste à 0 ou plusieurs "song"
un "song" fait référence à aucun ou plusieur "song_file"
les relations sont simples.
donc pour commencer je fait une jointure sur les 3, pour avoir un mix d'infos sur l'artiste,e les fichiers, et la chansons en elle même.
les song_file ont 2 champs important track_type (int) et chorus(int)
mon but etant de lister tout les "song_file" ayant le "track_type" ET le "chorus" le plus élevé.
je ne sais pas trop comment m'y prendre, j'avais commencer a faire ceci:
je repete que un "song" peut avoir plusieurs "song_file", exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT * FROM song_file sf, song s, artist art WHERE sf.song_id = s.id AND s.artist_id = art.id AND track_type = ( SELECT max( track_type ) FROM song_file WHERE id = s.id) AND chorus = ( SELECT max( chorus ) FROM song_file WHERE id = s.id)
song_id 500
\_ song_file_id 456 -> track_type 1 / chorus 1
\_ song_file_id 600 -> track_type 3 / chorus 1
\_ song_file_id 789 -> track_type 3 / chorus 2
donc la avec ma requête je récupére le son_file_id 600 et le 789.
vous aurez compris que le 2eme critère de selection ce basant sur le chorus ne fonctionne pas.
merci pour votre aide
Partager