用MySql连接四个表

用MySql连接四个表,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

我有四个表,分别有各自的“参数”

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
但是现在,如何连接这两个“now”表


我的想法是从Ticket和person中加入person\u ID,因为您还没有详细说明每个列的意义,我的答案执行内部连接,而不考虑顺序

 SELECT D.person_DNI,  D.Segment, P.person_ID, T.movie_ID
 FROM Date D
 JOIN Person P 
   ON D.person_DNI = P.person_DNI
 JOIN Ticket T
   ON P.person_ID = T.person_ID 

 -- Because you dont use anything from Movie like Movie.name 
 -- you dont really need join Movie to get movie_id
 JOIN Movie M
   ON T.movie_ID = M.movie_ID
您最好可以在一个查询中连接多个表:

选择人物ID、t.人物ID、m.电影ID、片段 来自p人 在t.person\u ID=p.person\u ID上加入票t 在m.Movie\u ID=t.Movie\u ID上加入电影m 加入日期d.person\u DNI=p.person\u DNI 或者不太好,您可以通过嵌套查询来查询临时表:

选择t1.person\u ID、person\u DNI、movie\u ID、Segment 从…起 选择人员ID、电影ID 从'Movie'A加入'Ticket'B ON A.Movie\u ID=B.Movie\u ID t1 参加 选择人员编号、B.人员ID、A.段 从日期A开始 在A.Person\u dni=B.Person\u dni上左连接人员B t2 在t1.person\u ID=t2.person\u ID上
您可以在MySQL中使用自然连接:

SELECT person_ID , person_DNI , movie_ID , Segment
FROM (((Date NATURAL JOIN Person) NATURAL JOIN Ticket ) NATURAL JOIN Movie)
有关更多信息,请查看此链接:

我希望这能有所帮助。

什么是人?什么是日期表?您需要解释表的基数,以查看连接的顺序。是一个日期有几个人,还是一个人有几个日期,请参见: