mysql - 用 MySql 连接四个表
问题描述
我有四张桌子,它们各自的“论据”
Movie(name, movie_ID,....)
Ticket(movie_ID, person_ID, ....)
Person(person_DNI, person_ID,....)
Date(person_DNI, Segment)
我需要形成下表,
person_ID | person_DNI | movie_ID | Segment
所以,为此我加入前两个表(电影和门票),然后加入以下两个表(日期和人员)
SELECT person_ID, movie_ID
FROM `Movie` A JOIN `Ticket` B ON A.movie_ID = B.movie_ID
SELECT person_DNI, B.person_ID, A.segment
FROM Date A
LEFT JOIN Person B ON A.person_dni=B.person_DNI
但是现在,如何加入这两个“现在”表?
我的想法是从 Ticket 和 Person 加入 person_ID
解决方案
由于您没有详细说明每列的意义,我的回答执行内部连接而不注意顺序。
最好,您可以在单个查询中连接多个表:
SELECT person_ID, t.person_ID, m.movie_ID, Segment
FROM Person p
JOIN Ticket t ON t.person_ID = p.person_ID
JOIN Movie m ON m.movie_ID = t.movie_ID
JOIN Date d ON d.person_DNI = p.person_DNI
或者(不太好),您可以通过嵌套查询来查询临时表:
SELECT t1.person_ID, person_DNI, movie_ID, Segment
FROM (
SELECT person_ID, movie_ID
FROM `Movie` A JOIN `Ticket` B ON A.movie_ID = B.movie_ID
) t1
JOIN (
SELECT person_DNI, B.person_ID, A.segment
FROM Date A
LEFT JOIN Person B ON A.person_dni = B.person_DNI
) t2
ON t1.person_ID = t2.person_ID
推荐阅读
- c# - 如何反序列化多维 JSON
- vmware-clarity - VMWare Clarity v3 和 Angular v9 中的默认字体大小
- python - np.ufunc.at 用于二维数组
- python - Pandas:使用 date.dt.day 作为子集删除重复项
- bootstrap-4 - 为什么这个引导代码不适用于嵌套行?
- ios - 如何在 segue 之前等待函数完成并更新 tableview。iOS 斯威夫特
- python - Python:尝试从另一个编码 .py 文件导入模块时出现“ModuleNotFoundError”
- file - electron sheetjs 从 JSON 下载生成的文件
- json - 带有 ppx_deriving_yojson 的 sum 类型变体的自定义 json 生成器
- tfs - TFS 2018 PAT 令牌和 AD 帐户密码更改?