首页 > 解决方案 > 用 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

标签: mysql

解决方案


由于您没有详细说明每列的意义​​,我的回答执行内部连接而不注意顺序。

最好,您可以在单个查询中连接多个表:

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

推荐阅读