2016-05-08 36 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。 。 。该问题的原始版本没有示例查询。而另一个答案是我写这个时只使用逗号。 –