mysql - 如何使用连接查询多个弱表
问题描述
我有一个包含两个强实体和三个弱实体的数据库。弱实体仅具有对其相关的强表的主键的外键引用,以创建表之间的关联。
我有一个查询以我想要的方式从一个表中选择,但不确定如何一次从所有三个表中进行选择并在一个查询中显示数据。
ERD:
我尝试了许多不同的连接,但无法让它们正常工作。此选择显示我想要的一张表的信息:
select f.FilmName, concat(p.FirstName, ' ', p.LastName) as Producer
from filmtable as f
inner join persontable as p
inner join produced;
我希望能够选择并显示所有三个弱表中的所有信息,格式类似于:
FilmName,制片人,编剧,导演。
解决方案
你需要:
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;
推荐阅读
- java - 如何仅更新可能已经为空的某些字段(使用 JSON 补丁)
- python-3.x - 如何使用 av.open() 访问我的网络摄像头麦克风中的音频流?
- python - Pandas 使用第一个有效索引按组删除 nan
- python - 计算多个字典键的 Pythonic 方法
- python - 将多行字符串的每一行发送到 for 循环中的列表
- wordpress - Wordpress - 如何让 tag_id 与 post_type 一起使用?
- sql-server - SQL Server 中这两个循环删除查询有什么区别
- r - 在 Ggplot 中添加一个不与先前参数重叠的图层
- javascript - 通过检查响应来处理 Promise 中的错误
- javascript - 从 JS 到 PHP 的 POST 请求:错误的 JSON