Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MYSQL, Max, Group by và 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

Có điều gì đó sai với thiết kế giản đồ của bạn. Nếu một Movie có thể có nhiều Genre cũng như Genre có thể chứa trên nhiều Movie , nó phải là một thiết kế ba bảng.

Bảng MovieDetails

  • MovieID (PK)
  • MovieName
  • Đánh giá phim

Bảng thể loại

  • GenreID (PK)
  • GenreName

Bảng Movie_Genre

  • MovieID (FK) - khóa chính kết hợp với 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. nhận mục nhập văn bản mới nhất của câu lệnh GROUP BY

  2. LINQ to Entities không nhận dạng được phương thức 'System.String ToString ()' của phương thức và phương thức này không thể được dịch thành một biểu thức lưu trữ

  3. Nhận giá trị trước sau khi cập nhật - MySql

  4. Làm thế nào để chèn hình ảnh trong cơ sở dữ liệu mysql (bảng)?

  5. Truy vấn MySQL Chọn, SUM, THAM GIA TRÁI