当前位置: 首页 > 面试题库 >

mysql查询联接三个表

凌永逸
2023-03-14
问题内容

我正在使用此查询:

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

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


问题答案:

试试这个:

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

希望这是有道理的。



 类似资料:
  • 问题内容: 我有以下查询: 所以我正在使用并抓住。所以现在,我要获取该image_id并将其从图像表中转换成。 如何将其添加到查询中? 问题答案: 您可以简单地添加另一个联接,如下所示: 但是请注意,由于它是一个,如果您的消息中没有图像,则将跳过整个行。如果可能的话,您可能需要执行一次操作,该操作将仅在存在一个仪表板消息的情况下返回所有仪表板消息和一个image_filename(否则,您将获得n

  • 我在Mysql中有一个查询, 我已经完成了简单的查询转换为hibernate查询。我将所有pojo类绑定到表。请指导我如何将多个连接查询转换为一个hibernate查询。

  • 问题内容: 我有一个NewsStories表格,剩下一些相关表格。每个新闻故事可以具有多个图像,类别和地址。因此查询实质上是: 通常每个故事有一些图像和地址,以及1或2个类别。NewsStories表包含大约10,000条文章。 问题在于性能相当慢(大约15-20秒,尽管它的确变化很大,有时甚至低至5秒)。 我想知道是否有更好的方法来组织查询以加快查询速度(我对SQL还是很陌生)。 尤其是,给定故

  • 问题内容: 有人可以帮助我了解此查询的问题吗: 问题答案: 之所以无法使用,是因为MySQL不按照您尝试的方式在delete语句中支持连接语法。 使用: …或使用EXISTS:

  • 问题内容: 这是我的问题,我正在选择并执行多个联接以获取正确的项目…它吸引了相当多的行,超过100,000。当日期范围设置为1年时,此查询将花费5分钟以上的时间。 我不知道是否可能,但恐怕用户会将日期范围扩展到10年左右并使其崩溃。 有人知道我可以如何加快速度吗?这是查询。 我不是MySQL方面的佼佼者,因此不胜感激! 提前致谢! 更新 这是您要求的解释 我还为table5行和table4行添加了

  • 问题内容: 我一直在尝试使它工作一段时间,但似乎无法正常工作,也许甚至没有可能,我想做的就是使用诸如此类的方法来执行MySQL连接查询我发现的例子… 但这似乎根本不起作用,可以提供的任何帮助将是非常好的,谢谢! 问题答案: 尝试 MySQL进行字符串连接的方式与其他数据库不同,因此,如果要移植应用程序,则需要有一个备用版本用作连接运算符,如Michael在另一个答案中提到的那样。但是,此操作符在M