用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)
有关更多信息,请查看此链接:
我希望这能有所帮助。什么是人?什么是日期表?您需要解释表的基数,以查看连接的顺序。是一个日期有几个人,还是一个人有几个日期,请参见: