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:

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)
je repete que un "song" peut avoir plusieurs "song_file", exemple :

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