2010-08-11 71 views
3

我有2個單獨的查詢返回給我下表:SQL結合2個表

=========================== 
Id f_name  l_name 
=========================== 
15 Little  Timmy 
16 John  Doe 
17 Baby  Jessica 
--------------------------- 


=========================== 
Id item_name item_price 
=========================== 
15 Camera  100 
15 Computer 200 
16 Pony  55 
--------------------------- 

在MySQL中,我該如何結合2成這樣:

=================================================== 
Id f_name  l_name  item_name  item_price 
=================================================== 
15 Little  Timmy  Camera  100 
15 Little  Timmy  Computer  200 
16 John  Doe  Pony   55 
17 Baby  Jessica 
--------------------------------------------------- 

任何援助不勝感激。謝謝。

+0

怎麼樣?我對此有點困惑。 – StackOverflowNewbie 2010-08-11 14:39:29

回答

2

您需要使用左外join

SELECT names.Id, names.f_name, names.l_name, prices.item_name, prices.item_price 
FROM names 
LEFT OUTER JOIN prices 
    ON names.Id = prices.Id 
+0

+1表格*名稱*中的所有行以及表格*價格*中可匹配的行都會產生「外部聯接」。當表* *價格*中沒有行時,表示外部連接的表,則將返回表*行*中的行。事實上,*寶貝傑西卡*應該被退回,但表格*價格*沒有匹配的行。 – 2010-08-11 14:00:26

+0

@OMG小馬 - 感謝您指出語法錯誤...現在修復。 – Oded 2010-08-11 14:36:30

3

選擇
name_table.Id, name_table.f_name, name_table.l_name,
item_table.item_name,從
item_table.item_price name_table left join item_table on name_table.Id = item_table.Id

享受!

0

如果要在數據庫中創建具有該結果的表,請執行create table命令中的任何這些選擇/連接。

CREATE TABLE foobar SELECT ... 
0

如果要在應用程序中定期執行此選擇語句,可能需要考慮在數據庫中創建視圖。視圖基本上是多個表中數據的組合。在這裏使用視圖的一個主要好處是在你的應用程序中查詢更簡單,所以不需要在應用程序中進行連接,而只需從視圖中選擇所有的字段。

你的CREATE VIEW語句看起來或多或少像道格的答案,而你的選擇,然後將

選擇ID,f_name,l_name,ITEM_NAME,ITEM_PRICE從my_view;

More details on MySQL CREATE VIEW

3

有很多類型的連接,並且它在數據庫管理一個非常有趣和重要的課題。 SO自己的Jeff Atwood有一個很好的post描述了他們將被使用的不同類型的連接和情況。

+0

@StackOverflowNewbie,閱讀這篇文章。 – 2010-08-11 13:58:11