16

我正在使用这个查询:

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。我怎样才能通过加入这个表来编写新的查询,得到与上面相同的结果?

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

4

2 回答 2

17

试试这个:

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我们应该完成。

希望这是有道理的。

于 2012-04-21T08:50:43.500 回答
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
于 2012-04-21T08:55:27.477 回答