2013-12-16 83 views
0

我有一個我已經導入到mysql的表。mysql從一個表中創建多個表

現在我需要創建多個相關的表。

所以基本上我已經得到了目前在我使用last_insert_id可能永遠不會增加,因爲它得到的最後插入下面的

start transaction; 

Insert into Address (AddressLine1, AddressLine2, Town, County, Postcode) 
Select Distinct Address_line_1, Address_Line_2, Town, County, Postcode from Import; 

set addressLastId = last_insert_id(); 

INSERT INTO Organisation (Name, AddressID) 
SELECT DISTINCT Supplier_Name, addressLastId FROM Import; 

commit; 

第二部分。

所以我需要鍛鍊我如何得到插入到地址表中的每一行的以前的ID?

我需要在地址插入內部循環嗎?

乾杯

回答

0

你可以使用第二個插入一個連接 - 連接地址和進口,並插入從每個必填字段進入組織。

如果您按順序處理每條記錄,取得最後一個插入ID將會起作用。

+0

乾杯。那麼,我將如何將正確的地址與組織進行匹配,因爲沒有唯一的ID來確定這一點? – tjhack

+0

我會加入你已經導入到地址(如Address_line_1,Address_Line_2,Town,County)的4個字段,並返回來自Address的ID。 如果有重複項,您可能需要使用左連接並選擇不同。 –

+0

先做好連接表,這樣它就可以獲得你需要插入公司的所有信息,並在你遇到困難時發佈你的查詢。 –

1

我同意蒂姆。 當您填充地址後,您就可以運行

INSERT INTO Organisation (Name, AddressID) 
SELECT DISTINCT Import.Supplier_Name, Address.id 
FROM Import INNER JOIN Address ON (set all the address lines and city etc =, since Im guessing there wasnt an address ID in the original import)