我如何加入这5张桌子?

时间:2014-09-05 07:08:19

标签: mysql join

ENGINE InnoDB

表A

Id_A INT AUTO_INCREMENT PRIMARY KEY;
NameA VARCHAR;
SurnameA VARCHAR;

表B

Id_B INT AUTO_INCREMENT PRIMARY KEY;
NameB VARCHAR;
SurnameB VARCHAR;

表C

Id_C INT AUTO_INCREMENT PRIMARY KEY;
Des VARCHAR;

表D

Id_D INT AUTO_INCREMENT PRIMARY KEY;
Date_Time DATETIME;
Id_A INT;
Id_B INT;
Id_C INT;

表E

Id_E INT AUTO_INCREMENT PRIMARY KEY;
Date DATE;
Time TIME;
NameA VARCHAR;
SurnameA VARCHAR;
NameB VARCHAR;
SurnameB VARCHAR;
Des VARCHAR;

我已将数据从txt文件导入表A和表E.还将表E中的唯一数据添加到表B和表C.现在我必须将数据添加到表D中(来自A,B,C的ID号以匹配表E中的日期和时间)。我希望这是有道理的。谢谢!

1 个答案:

答案 0 :(得分:0)

这应该有效:

INSERT INTO TableD (Date_Time, Id_A, Id_B, Id_C)
SELECT TIMESTAMP(e.Date, e.Time),
       a.Id_A,
       b.Id_B,
       c.Id_C
FROM TableE e
INNER JOIN TableA a on e.NameA = a.NameA AND e.SurnameA = a.SurnameA
INNER JOIN TableB b on e.NameB = b.NameB AND e.SurnameB = b.SurnameB
INNER JOIN TableC c on e.Des = c.Des

请注意,如果您的表A或B中有一些姓名相同的人,或者表C的Des不是唯一的,则这种导入方式将失败。

相关问题