首页 > 解决方案 > 如何使用连接查询多个弱表

问题描述

我有一个包含两个强实体和三个弱实体的数据库。弱实体仅具有对其相关的强表的主键的外键引用,以创建表之间的关联。

我有一个查询以我想要的方式从一个表中选择,但不确定如何一次从所有三个表中进行选择并在一个查询中显示数据。

ERD:

在此处输入图像描述

我尝试了许多不同的连接,但无法让它们正常工作。此选择显示我想要的一张表的信息:

select f.FilmName, concat(p.FirstName, ' ', p.LastName) as Producer
from filmtable as f
inner join persontable as p
inner join produced;

我希望能够选择并显示所有三个弱表中的所有信息,格式类似于:

FilmName,制片人,编剧,导演。

标签: mysqlsql

解决方案


你需要:

select f.FilmName, concat(ppr.FirstName, ' ', ppr.LastName) as Producer,
concat(psw.FirstName, ' ', psw.LastName) as ScreenWriter,
concat(pdir.FirstName, ' ', pdir.LastName) as Director
from filmtable as f
left join produced as prod ON prod.FilmID = f.FilmID
left join Directed as dir ON dir.FilmID = f.FilmID
left join ScreenWote as sw ON sw.FilmID = f.FilmID
left join persontable as ppr ON prod.PersonID = ppr.personID
left join persontable as psw ON sw.PersonID = psw.personID
left join persontable as pdir ON dir.PersonID = pdir.personID;

推荐阅读