sql >> Database >  >> RDS >> Mysql

MYSQL, Max, Groeperen op en 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

Er is iets mis met uw schemaontwerp. Als een Movie kan veel Genre hebben evenals Genre kan in veel Movie . voorkomen , het zou een ontwerp met drie tabellen moeten zijn.

Tabel met filmdetails

  • FilmID (PK)
  • Filmnaam
  • Filmwaardering

Genretabel

  • GenreID (PK)
  • Genrenaam

Film_genretabel

  • MovieID (FK) -- samengestelde primaire sleutel met GenreID
  • GenreID (FK)


  1. Een datetime-equivalent in java.sql ? (is er een java.sql.datetime?)

  2. Automatisch gegenereerd volgnummer beginnend vanaf 001 (ALLEEN VOOR 3 CIJFERS) - PHP / MYSQL

  3. selecteer count(*) uit de tabel van mysql in php

  4. Hoe maak je een incrementele back-up in Mysql