Mysql查询连接三个表

我使用这个查询:

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_id,sales_id,cat_id等字段.如何通过加入这个表来编写新的查询,以获得与上述相同的结果?

我对数据库很新,需要帮助.提前致谢

最佳答案
尝试这个:

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_id,cat_id,这些你应该映射到关系的另外两边.

您不能加入tb_category b在新模式上的a.cat_id = b.cat_id上,因为我们不再具有a.cat_id,并且这里是新的表tb_sales_category角色,通过插入两个绑定方面,一个与INNER JOIN tb_category b ON s.cat_id = b.cat_id,另一个用INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id我们应该完成.

希望这是有道理的.

转载注明原文:Mysql查询连接三个表 - 代码日志