admin

mysql查询联接三个表

sql

我正在使用此查询:

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。我如何通过也加入该表来编写新查询,以获得与上述相同的结果?

我是数据库新手,需要帮助。提前致谢


阅读 157

收藏
2021-05-10

共1个答案

admin

试试这个:

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_categorysales_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_id另一个绑定在一起INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id

希望这是有道理的。

2021-05-10