(我的)SQL:加入多个表

时间:2016-05-08 12:26:28

标签: mysql sql database join

我是(My)SQL的新手,需要一些帮助: 在数据库中,我有3个表,一个例子:

购买:

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

我知道如何在表购买中加入以获取模型的名称。不幸的是我不知道如何获得制造商?

我的SQL查询:

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

2 个答案:

答案 0 :(得分: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?

答案 1 :(得分: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;