Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Extração de dados MySQL de 3 tabelas - joins e max


Você quer o máximo de grupo :
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

Veja em sqlfiddle .

Observe que esta consulta retorna todos vídeos com o número máximo de pontos dentro de cada tag, portanto, mais de um registro será retornado para tags empatadas. Se você deseja devolver apenas um registro em tais situações, especifique como determinar o vídeo que deve ser devolvido.