使用派生值列查看

View with derived value column

我在尝试使用计算出的平均列创建视图时遇到了一些问题,对于每一部电影行,我都需要一个基于评分 table 中这部电影的所有评分的平均评分。

电影 table:

CREATE TABLE IF NOT EXISTS streaming_db.movie(
    id BIGINT NOT NULL auto_increment
    ,name VARCHAR (100)
    ,description VARCHAR (1000)
    ,PRIMARY KEY (id)
) engine = InnoDB;

评分table:

CREATE TABLE IF NOT EXISTS streaming_db.rating( 
    id BIGINT NOT NULL auto_increment
    ,rating_score DECIMAL(4, 2) NOT NULL
    ,comment VARCHAR (255) NULL
    ,id_profile BIGINT NOT NULL
    ,id_movie BIGINT NOT NULL
    ,PRIMARY KEY (id)
) engine = InnoDB;

这是我目前的情况:

CREATE VIEW streaming_db.midia
AS
SELECT name,
    description
FROM streaming_db.movie a
INNER JOIN (SELECT avg(rating_score) AS averageRating from streaming_db.rating where 
rating.id_movie = a.id); 

它告诉我派生的 table 需要它自己的别名,我不知道这是否真的给我每行的平均值。

您正在尝试 FROM 子句中的相关子查询。好吧,这实际上是一个真实的东西,叫做横向连接

但这不是你的本意。将逻辑移动到 SELECT:

SELECT m.name, m.description,
       (SELECT avg(rating_score)
        FROM sistema_streaming_db.rating r
        WHERE r.id_movie = m.id
       ) as averageRating
FROM streaming_db.movie m;

请注意,我修复了 table 别名,因此它们是 table 名称的缩写,这使得查询更容易阅读。