Mysql查询加入三个表

时间:2012-04-21 08:26:40

标签: mysql sql join inner-join

我正在使用此查询:

SELECT a.sales_id, d.bus_title, a.cat_id
FROM tbl_sales a
INNER JOIN tb_category b ON a.cat_id = b.cat_id
INNER JOIN tbl_business d ON d.bus_id = a.bus_id

产生这个结果:

sales_id  | bus_title      |cat_id
----------|----------------|------------
 1        | Business 1     | 6  
 2        | Business 12    | 12
 3        | Business 123   | 25

我将字段cat_id更改为名为tb_sales_category的新表格,其中包含字段sales_category_idsales_idcat_id。如何通过加入此表来编写新查询,得到与上面相同的结果?

我对数据库有点新意,需要帮助。提前致谢

2 个答案:

答案 0 :(得分:14)

试试这个:

SELECT a.sales_id, d.bus_title, s.cat_id
FROM tbl_sales a
INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id
INNER JOIN tbl_business      d ON a.bus_id   = d.bus_id
INNER JOIN tb_category       b ON s.cat_id   = b.cat_id

这个想法很简单,新表tb_sales_category中的第一个字段sales_category_id作为代理键,它与关系无关在另外两个表之间。然后我们来到另外两个sales_idcat_id的字段,这些字段应该映射到关系的另外两个边。

您不能Join tb_category b ON a.cat_id = b.cat_id新架构因为我们不再拥有a.cat_id,而且这里有新的tb_sales_category角色,通过插入两个绑定边,一个我应该完成INNER JOIN tb_category b ON s.cat_id = b.cat_idINNER JOIN tb_sales_category s ON a.sales_id = s.sales_id的另一个。

希望这是有道理的。

答案 1 :(得分:4)

我不是内部联盟的忠实粉丝所以试试这个:

SELECT a.sales_id, a.cat_id, c.bus_title
FROM tb_sales_category a, tb_sales b, tbl_business c
WHERE a.sales_id = b.sales_id
AND b.bus_id = c.bus_id