sql >> Databasteknik >  >> RDS >> Mysql

MYSQL, Max, Group by och Max

SELECT  g.*, d.*
FROM    MovieGenre g
        INNER JOIN MovieDetail d
            ON g.MovieID = d.MovieID
        INNER JOIN
        (
            SELECT  a.Genre, MAX(b.Rating) maxRating
            FROM    MovieGenre a
                    INNER JOIN MovieDetail b
                        ON a.MovieID = b.MovieID
            GROUP   BY a.Genre
        ) sub ON    g.Genre = sub.Genre AND
                    d.rating = sub.maxRating

Det är något fel med din schemadesign. Om en Movie kan ha många Genre samt Genre kan finnas på många Movie , bör det vara en design med tre bord.

Tabell med filmdetaljer

  • Film-ID (PK)
  • Filmnamn
  • MovieRating

Genretabell

  • GenreID (PK)
  • Genrenamn

Tabell för filmgenre

  • MovieID (FK) – sammansatt primärnyckel med GenreID
  • GenreID (FK)


  1. Kontrollera om användarnamnet finns PDO

  2. Skapa och använda MySQL-lagrade procedurer - en handledning

  3. Vilken MySQL-kollation är bäst för att acceptera alla unicode-tecken?

  4. php-varning när du loggar in på webbplatsmappen av cpanel