2014-09-05 54 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