Mysql
 sql >> Base de données >  >> RDS >> Mysql

Extraction de données MySQL à partir de 3 tables - jointures et max

Vous voulez le maximum par groupe :

SELECT * FROM Video JOIN (

  SELECT   VideoTags.tag_id, MAX(points) points
  FROM     Video JOIN VideoTags ON Video.id = VideoTags.video_id
  GROUP BY VideoTags.tag_id

) t USING (points) JOIN Tags ON t.tag_id = Tags.id

Voir sur sqlfiddle .

Notez que cette requête renvoie tous vidéos ayant le nombre maximum de points dans chaque balise, donc plus d'un enregistrement sera renvoyé pour les balises liées. Si vous souhaitez renvoyer un seul enregistrement dans de telles situations, veuillez spécifier comment déterminer la vidéo qui doit être renvoyée.