MYSQL-创建具有多个表的视图

MYSQL-创建具有多个表的视图,mysql,Mysql,创建包含多个表和连接表的视图时遇到问题 这就是我目前的处境: CREATE VIEW music_view AS SELECT recordings.rec_title, recordings.sales, artists.name as 'artists', genres.name as 'genres' FROM recordings JOIN artists JOIN genres JOIN rec_artist WHERE artists.id = rec_artist.id

创建包含多个表和连接表的视图时遇到问题

这就是我目前的处境:

CREATE VIEW music_view AS 
SELECT recordings.rec_title, 
recordings.sales, 
artists.name as 'artists', 
genres.name as 'genres'
FROM 
recordings
JOIN artists
JOIN genres
JOIN rec_artist
WHERE artists.id = rec_artist.id
AND recordings.rec_id = rec_artist.rec_id
AND genres.id = recordings.genre_id;
表架构:

recordings
rec_title (varchar)
rec_id (Primary Key)
sales (dec)
genre_id (Foreign Key)

genres
id (primary key)
name (varchar)

artists
id (primary key)
name (varchar)

rec_artist (junction table)
artist_id (primary key) 
rec_id (primary key)
我有点困惑,不知道该从哪里着手,但仍在思考MYSQL。我应该做子查询而不是联接吗?我的结果是空的。 这个家庭作业的问题如下:

创建一个包含所有录音的标题和销售额、各自艺术家的姓名以及录音流派名称的视图。按流派名称的字母顺序排序。在同一流派中,按艺术家姓名的字母顺序排序。在同一艺术家中,按销售额排序(最高排名第一)。 不要包含空标题、流派或艺术家名称。
视图必须有4列

您将需要一个与下一个类似的查询,使用
内部联接
来联接适当列上的表:

CREATE VIEW music_view AS 
SELECT
    r.rec_title AS 'title',
    r.sales AS 'sales',
    a.name AS 'artist', 
    g.name AS 'genre'
FROM
    recordings AS r
INNER JOIN
    rec_artists AS ra ON ra.rec_id = r.rec_id
INNER JOIN
    artists AS a ON a.id = ra.artist_id
INNER JOIN
    genres AS g ON g.id = r.genre_id
ORDER BY
    'genre' ASC, 'artist' ASC, 'sales' DESC;
最后一步:

不要包含空标题、流派或艺术家名称

您可以在
where
子句上添加一些限制。像这样:

CREATE VIEW music_view AS 
SELECT
    r.rec_title AS 'title',
    r.sales AS 'sales',
    a.name AS 'artist', 
    g.name AS 'genre'
FROM
    recordings AS r
INNER JOIN
    rec_artists AS ra ON ra.rec_id = r.rec_id
INNER JOIN
    artists AS a ON a.id = ra.artist_id
INNER JOIN
    genres AS g ON g.id = r.genre_id
WHERE
    r.rec_title IS NOT NULL
AND
    a.name IS NOT NULL
AND
    g.name IS NOT NULL
ORDER BY
    'genre' ASC, 'artist' ASC, 'sales' DESC;

问题是什么?您确实要加入,但加入的条件在哪里?我是否需要执行子查询来填充结果?有一个名为rec_Artister的连接表,其中包含艺术家id和rec_id。这将链接录制表和艺术家表。还有一个类型表链接到recordings表。请输入查询中涉及的表的架构。还有,读一读来感谢你!!这很有道理。非常感谢您的帮助。@Tony不客气,请注意,如果这对您有用,请将答案标记为正确。