sql使用内部联接连接三个表

时间:2013-11-24 16:42:23

标签: mysql sql join

在我的数据库中,我有3个名为itemsmanufacturersitems_manufacturers的表。 manufacturersitems_manufacturers

有一个HAS:MANY关系

我的items

 +---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| code          | varchar(25)  | NO   | MUL | NULL    |                |
| item_category | varchar(100) | NO   |     | NULL    |                |
| item_desc     | varchar(500) | NO   |     | NULL    |                |
| reorder_point | int(11)      | NO   |     | NULL    |                |
| unit          | varchar(45)  | NO   |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

我的manufacturers

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| code       | varchar(25)  | NO   |     | NULL    |                |
| name       | varchar(250) | NO   |     | NULL    |                |
| address    | varchar(750) | NO   |     | NULL    |                |
| contact_no | varchar(50)  | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

我的items_manufacturers

+-----------------+---------------+------+-----+---------+----------------+
| Field           | Type          | Null | Key | Default | Extra          |
+-----------------+---------------+------+-----+---------+----------------+
| id              | bigint(20)    | NO   | PRI | NULL    | auto_increment |
| item_id         | bigint(20)    | NO   | MUL | NULL    |                |
| manufacturer_id | bigint(20)    | NO   | MUL | NULL    |                |
| unit_cost       | decimal(20,2) | NO   |     | NULL    |                |
| vendor_id       | bigint(20)    | NO   |     | NULL    |                |
+-----------------+---------------+------+-----+---------+----------------+

在我的结果表中,我想要来自items_id表和items_desc的制造商的namemanufacturersmanufacturer_id。我的关系是

items.id=items_manufacturers.item_id and
manufacturers.id=items_manufacturers.manufacturer_id.

我尝试使用三个表的内部联接但不起作用。 我试过的查询

select 
  items_manufacturers.id,
  items.item_desc,
  item_manufacturers.manufacturer_id,
  manufacturer.name 
from items_manufacturers 
INNER JOIN items ON items_manufacturers.item_id=items.id 
INNER JOIN manufacturers ON items_manufacturers.manufacturer_id=manufacturers.id 

任何人都对此有所帮助,我很长时间都被困住了

1 个答案:

答案 0 :(得分:5)

我使用了以下代码并获得了您想要获得的结果。此代码可以解决您的问题:

select a.name,b.manufacturer_id,c.id,c.item_desc 
from manufacturers as a
inner join 
item_manufacturers as b
on b.manufacturer_id=a.id 
inner join item as c 
on c.id=b.item_id