2011-09-28 47 views
0

我想從兩個表加載屬性到一個表。如何將兩個表中的特定屬性加載到另一個表中?

我有一個位置表:

Id City  State  Country 
=============================== 
1 New York New York USA 
2 Portland Oregon USA 
3 Tokyo  Honshu Japan 

和用戶表:

Id First_Name Last_Name Hometown_City Hometown_State Hometown_Country 
=========================================================================== 
1 Brett  Burr  New York  New York  USA 
2 Bucky  Beaver  Portland  Oregon   USA 
3 Ranma  Saotome Tokyo   Honshu   Japan 

我爲用戶創造一個新表,而不是包含單獨Hometown領域,有一個Hometown_Id外鍵。

喜歡的東西:

Id First_Name Last_Name Hometown_Id 
======================================== 
1 Brett  Burr  1 
2 Bucky  Beaver  2 
3 Ranma  Saotome 3 

不過,我的數據插入到新的用戶表時具有的語法有問題。

我可以用這樣的命令輕鬆地插入非基於位置的字段:

INSERT INTO newusers (Id, First_Name, Last_Name) 
SELECT DISTINCT Id, First_Name, Last_Name 
FROM users 

但是,我不知道正確的語法來然後從位置表中的值相加

+0

您可能想加入(城市,州,國家)兩個表。 –

+0

你能否更詳細地解釋你的意思?我應該加入哪兩張表,結果如何? –

+0

我不認爲你的意思是「屬性」,我認爲你的意思是數據。表的一個屬性是它的列數。 –

回答

0

假設你有適當的約束,那Location表中包含的唯一條目,下面應該工作:

INSERT INTO newusers (Id, First_Name, Last_Name, Hometown_Id) 
SELECT users.Id, users.First_Name, users.Last_Name, locations.Id 
FROM users 
INNER JOIN locations 
ON locations.City = users.Hometown_City 
AND locations.State = users.Hometown_State 
AND locations.Country = users.Hometown_Country 

如果你有更多的T需要一個位置(例如「當前居住」條目),別名和第二次加入locations表(從users)。

+0

我很抱歉,但我得到一個錯誤說 Hometown_Id 無效的 –

+0

@ByungkuneChoi這可能是因爲'Hometown_Id'是不存在的一個表中提到 – Sathya

+0

@ByungkuneChoi - 如果你會發現,我編輯你的問題(通過格式化查詢,並減少列出的列數 - 'hometown'和'current'基本上是相同的想法)。你將不得不修改你的查詢以適應你實際的表結構;放心,這是一個很好的學習機會! –

相關問題