2014-09-05 56 views
-1

ENGINE的InnoDB我如何加入这5张桌子?

表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中的日期和时间相匹配)。我希望这是有道理的。谢谢!

+0

表E非常看起来像一个错误的模型化想法。 – 2014-09-05 07:12:38

+0

表E将被删除,基本上将被表D替换。我被告知我需要向表E添加更多列(寻求帮助),但我被卡住了(这是我在mysql中的第一个项目)。任何解决方案 – Blueleaf 2014-09-05 07:38:40

回答

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是不会失败独特。

+0

谢谢你,非常棒!欢呼,并有一个轻松的周末! – Blueleaf 2014-09-05 18:41:22