sql >> Databáze >  >> RDS >> Mysql

MYSQL, Max, Seskupit podle a 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

V návrhu schématu je něco špatně. Pokud Movie může mít mnoho Genre stejně jako Genre může být obsaženo na mnoha Movie , měl by to být design se třemi tabulkami.

Tabulka podrobností o filmu

  • MovieID (PK)
  • Název filmu
  • Hodnocení filmů

Tabulka žánrů

  • GenreID (PK)
  • GenreName

Tabulka filmových žánrů

  • MovieID (FK) – složený primární klíč s GenreID
  • GenreID (FK)


  1. Jak obnovit data ze smazaného kontejneru Docker? Jak jej znovu připojit k datům?

  2. Představujeme Agent-Based Database Monitoring s ClusterControl 1.7

  3. Jak zajistím, aby výčty Java a Postgres spolupracovaly při aktualizaci?

  4. Jak mysql definuje DISTINCT() v referenční dokumentaci