2013-04-12 73 views
0

我從字面上昨天開始學習PHP/MySQL的,所以我道歉,如果這是一個簡單的/愚蠢/措辭嚴重問題。MySQL查詢 - 基本加盟諮詢

我有一個數據庫設置了兩個表:

位置

l_id | loc_name 
---------------- 
1 | France 
2 | London 
3 | The Moon 

項目

i_id | item_name | item_loc 
---------------------------- 
1 | Book  | 1 
2 | Mirror | 1 
3 | Bread  | 2 
4 | Camera | 2 
5 | Cheese | 3 
6 | Ladle  | 3 

當l_id號碼列表提供如何最找到loc_name和分配給每個項目的所有項目?

可以這樣用一個單一的查詢做或做我需要查詢兩次 - 爲項目一次的名稱和一次?

在一個側面沒有,我已經使用JOIN在其他查詢一些非常小的成功,但我真的不明白爲什麼他們的工作。我很難讓它在我的腦海中得到解決,究竟幕後的過程以及語法如何描述它。如果任何人都可以推薦任何關於這個主題的閱讀材料,那就太棒了。

感謝您的幫助和抱歉,如果這個問題是有點

+0

您可以瞭解MySQL的加入這裏http://www.dbasquare.com/2012/05/16/joins-inner-outer-left-right/ – jathin

回答

1

應該工作:

SELECT items.i_id, items.item_name, location.loc_name FROM items LEFT JOIN locations ON l_id = items.item_loc 
+1

歡呼聲,這很好地完成這項工作。我添加了WHERE l_id = 1'來返回關於特定位置的結果。我還沒有完全明白到底_why_它的工作方式是這樣,但我很快就希望靈光一現。 – popClingwrap

+0

很高興聽到這個! :) – Chris

1

在O'Reilly出版閱讀材料Learning SQL而言是一個很好的起點。如果你喜歡免費資源,則W3Schools SQL tutorial介紹了基礎很好。我發現使用帶有明確連接的完整語法可以更容易地理解正在發生的事情。所以,在你的榜樣,是這樣的:

SELECT * 
FROM locations AS loc 
INNER JOIN items AS i 
ON loc.l_id = i.item_loc 
WHERE loc.l_id IN (value1,value2,...) 
0

由於l_id和item_loc是我們可以進行內相同的屬性上加入兩個表。

select l.loc_name,i.item_name 
    from Items i inner join Locations l 
    on i.item_loc=l.l_id 

基本上它會通過映射通用屬性值(這裏是item_loc和l_id)來組合兩個表。我們得到另一個具有屬性的表(i_id,item_name,item_loc,loc_name)。