我正在使用此查询:
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
。如何通过加入此表来编写新查询,得到与上面相同的结果?
我对数据库有点新意,需要帮助。提前致谢
答案 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_id
,cat_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
的另一个。
希望这是有道理的。
答案 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