Mysql 具有派生值列的视图

Mysql 具有派生值列的视图,mysql,sql,sql-view,Mysql,Sql,Sql View,我在尝试创建一个包含计算平均值列的视图时遇到了一些问题,对于每一个电影行,我需要一个基于评级表中该电影的所有评级的平均评级 电影表: 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;

我在尝试创建一个包含计算平均值列的视图时遇到了一些问题,对于每一个电影行,我需要一个基于评级表中该电影的所有评级的平均评级

电影表:

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;
评级表:

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); 

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

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

但这不是你的意图。将逻辑移到
选择

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;

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

问题是什么?它告诉我派生表需要自己的别名,我不知道这是否真的给了我每行的平均值。这应该是个问题。但是,即使添加了表别名,查询仍然会被破坏。很抱歉,我将添加它。