2016-05-08 37 views
0

我是新來的(我的)SQL,需要一些幫助: 在一個數據庫中,我有3個表,一個例子:(我的)SQL:加入多個表

採購:

 
id model price 
------------ 
1 1 2500 
2 2 14000 

製造商:

 
id name 
----------- 
1 Opel 
2 Crysler 

型號:

 
id name manufacturer 
------------------------- 
1 Astra  1 
2 C 300  2 


在表中購買型號是一個外鍵,並且是鏈接到model.id。在型號製造商是一個外鍵和鏈接到manufacturer.id

我的目標是一個表,看起來象下面這樣:

 
id model price manufacturer 
------------------------------ 
1 Astra 2500 Opel 
2 C300 14000 Chrysler 

我知道該怎麼做表中的採購量JOIN來獲取模型的名稱。不幸的是,我不知道如何獲得製造商?

我的SQL查詢:

 
SELECT * FROM purchases 
JOIN model 
ON purchases.model = model.id 
+0

編輯您的問題幷包含您確實知道如何編寫的查詢。作爲提示:最終的查詢只是一個'JOIN'。 –

+0

@GordonLinoff我編輯了我的問題。我的方法是類似於(對於第二個JOIN):'JOIN製造商在購買.name = manufacturer.id',但是對於SQL purchaes.name是未知的子句。 – brahue

回答

2

與 '內部聯接' 試試:

select m.name as model, p.price, mf.name as manufacturer 
from purchases p 
inner join 
model m on p.model = m.id 
inner join 
manufacturer mf on m.manufacturer = mf.id; 

您可以加入你的表 '其中'。

試試:

select m.name as model, p.price, mf.name as manufacturer 
from purchases p, manufacturer mf, model m 
where m.manufacturer = mf.id 
and p.model = m.id 

但與「地方」是不是很好,而且被認爲是過時的方式。

沒有與你類似的問題,也許可以幫助你澄清一個問題: SQL Inner-join with 3 tables?

+0

@PaulSpiegel 我不會忘記這種情況。請查看文字。 –

+0

對不起,我已經刪除了我的評論,然後再發布你的評論。不過,如果您使用'JOIN .. ON ..',我可能不會監督這種情況。 –

+1

我並不是低調的答案,但upvote是完全不合適的。不要在'FROM'子句中使用逗號。這是一種陳舊的語法,已經被許多年來更強大的'JOIN'和'ON'關鍵字取代。 –

0

連接表使用JOIN(以及相關的)的關鍵字的正確方法。簡單的規則:從不FROM子句中使用逗號。始終使用明確的JOIN語法:

select m.name as model, p.price, mf.name as manufacturer 
from purchases p JOIN 
     model m 
     on p.model = m.id 
     manufacturer mf 
     on m.manufacturer = mf.id; 
+0

您的評論與問題無關,因爲OP已經在使用JOIN語法。 BTW:第二個JOIN關鍵字丟失。 –

+0

@PaulSpiegel。 。 。該問題的原始版本沒有示例查詢。而另一個答案是我寫這個時只使用逗號。 –