Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MYSQL, Maks, Kelompokkan menurut dan Maks

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

Ada yang salah dengan desain skema Anda. Jika Movie dapat memiliki banyak Genre serta Genre dapat memuat banyak Movie , itu harus berupa desain tiga tabel.

Tabel Detail Film

  • ID Film (PK)
  • Nama Film
  • Peringkat Film

Tabel Genre

  • GenreID (PK)
  • Nama Genre

Tabel Genre Film

  • MovieID (FK) -- gabungan kunci utama dengan GenreID
  • GenreID (FK)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Variabel mendapatkan NULL setelah perhitungan di MySQL Trigger

  2. pilih setiap baris lain di MySQL tanpa bergantung pada ID apa pun?

  3. kolom mySQL untuk menampung array

  4. Fungsi tidak terdefinisi mysql_connect()

  5. Panjang kolom JSON maks di MySQL