2014-03-25 23 views
0

重新設計數據庫佈局填寫表格另一個表ID列,我已經打了一個路障:如何使用中間表爲紐帶

原來的表現名爲Items_Old有重要的這3列:

Name | Width | Length 

因爲我已經做了一個新的表名爲ItemSizes

ID | Width | Length 

和最後叫Items

Name | SizeID 

我試圖找出如何選擇從ItemSizes表SizeID到Items

where Items_Old.Name = Items.Name and Items_Old.Width = ItemSizes.Width 
     AND Items_Old.Length = ItemSizes.Length 

我已經儘量得到爲能夠獲得SizeID和Items_Old.Name列表有以下幾點:

Select IST.ID , Old.Name 
From ItemSizes AS IST, Items_Old AS Old 
Where IST.Width = Old.Width 
     And IST.Length = Old.Length 

但是當我嘗試類似:

Insert Into Items 
(SizeID) 
Select IST.ID , Old.Name 
From ItemSizes AS IST, Items_Old AS Old 
Where IST.Width = Old.Width 
     And IST.Length = Old.Length 
Where Items.Name = Info.Name 

我得到的,因爲第二次在那裏我也試過

Insert Into Items 
(SizeID) 
(Select IST.ID , Old.Name 
From ItemSizes AS IST, Items_Old AS Old 
Where IST.Width = Old.Width 
     And IST.Length = Old.Length) As Info 
Where Items.Name = Info.Name 

,但得到了一個錯誤near "("

+0

我想你已經在Items列表的Name列中有一些值,並且你想更新SizeID列。是嗎? – KrazzyNefarious

+0

@BhupeshC是的,我已經認識到,我不想插入,我想更新,我一直在試圖找出現在更新的With語法。 – user2125348

+0

這是你的數據庫,Oracle,SQL Server,MySQL等? – KrazzyNefarious

回答

1

在UPDATE語句中,你可以查找值與相關子查詢的語法錯誤:

UPDATE Items 
SET SizeID = (SELECT ID 
       FROM ItemSizes 
       JOIN Items_Old USING (Width, Length) 
       WHERE Name = Items.Name) 
+0

這工作完美 – user2125348