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

如何联接三个表以求和

富涛
2023-03-14
问题内容

我有三个表:“产品”,“购买”,“发票”

产品表
Producct_no听名字
1引用
2听B
3引用C

采购表
purchase_no听产品_no数量
001引用1听81
002引用150
003引用3引用10

发票表
Invoice_no听产品_no数量
001引用1引用20
002引用10
003引用3引用10

我想获取每种产品的购买数量和发票数量,我使用以下查询

    选择PR.product_no,sum(P.qty),sum(I.qty)
    从产品公关 
    左加入发票I ON I.product_no = PR.product_no
    LEFT JOIN购买P ON P.product_no = PR.product_no
    按PR.product_no分组

product_no听sum(P.qty)sum(I.qty)
001引用162听160
002引用150引用50
003听10引用10

编辑:预期的结果
product_no听取sum(P.qty)sum(I.qty)
001引用81听20
002引用150引用10
003听10引用10

我的查询给我错误的答复(数量总和是错误的),请帮助我更正我的查询以正确获得结果。谢谢


问题答案:

根据提供的信息,我认为您的样本数据并不是您真正拥有的。我最好的猜测是,您的查询正在对这两个连接中的一个或两个进行扇出操作,这会使您的总和混乱。您需要分别对它们进行求和,否则,那些联接中的任何一个联接上的其他行都会扇出另一个联接,从而使总和中的结果重复。这在您的结果中很明显,因为001看起来是两倍(即使您的示例数据没有显示它)。

这样的事情将确保总和彼此独立:

SELECT PR.product_no, 
    ( SELECT sum(I.qty)
      FROM invoice I 
      WHERE I.product_no=PR.product_no ) invoice_qty,
    ( SELECT sum(P.qty)
      FROM purchase P 
      WHERE P.product_no=PR.product_no ) purchase_qty
FROM products PR


 类似资料:
  • 问题内容: 我正在尝试在BigQuery中加入三个表;表1具有一个事件的记录(即每一行是一个记录),表2具有第二个事件的记录,表3具有类别名称。 我想生成一个最终表,该表具有按类别和设备平台划分的表1和表2的计数。但是,每次运行此命令时,我都会收到一条错误消息,指出 join.t3.category不是join中任何一个表的字段 。 这是我当前的代码: 作为参考,这是表1和2之间的一个更简单的联接

  • 问题内容: 我有三个表:R,S和P。 表R通过外键与S连接;有 应该 是S中至少一个的记录,所以我可以加入: 如果S中没有记录,那么我没有行,那很好。 然后表S与P联接,其中记录为P可能存在,也可能不存在,并与S联接。 所以我做 如果我想将第二个JOIN绑定到S而不是R,例如我可以使用括号,该怎么办: 还是这已经是R,S和P之间笛卡尔积的自然行为? 问题答案: 各种外部联接和普通联接都在相同的优先

  • 问题内容: 我正在使用此查询: 产生以下结果: 我改变了场CAT_ID到一个名为新表包含的字段,,。我如何通过也加入该表来编写新查询,以获得与上述相同的结果? 我是数据库新手,需要帮助。提前致谢 问题答案: 试试这个: 这个想法很简单,在新表中的第一个字段是工作作为 代理键 ,它没有任何与其他两个表之间的关系。然后,我们来到了另外两个领域是哪些,这些你应该映射到关系的其他两个方面。 您不能使用新模

  • 问题内容: 我有两个表: 服务 ID 客户 服务 和 客户 ID 名称 电子邮件 如何列出表服务并将客户表的客户名称汇总在一起?该表中的现场客户服务在客户表上具有该客户的ID, 我感谢您的帮助 问题答案:

  • 问题内容: 我开始将DataTables Table插件用于jQuery ,但遇到了一些问题。我从这里使用示例代码。 我有MySQL表女巫看起来像这样: id | 名称| Father_id 是同一表中仅在不同行中的值。因此,如果我想知道父亲的名字,我必须在同一个表中进行搜索。但是DataTable所做的只是按原样显示MySQL表的内容。 在我的数据表中,我想显示如下数据: id | 名称| 父亲

  • 我有两张桌子, 我想为changelog实现一个搜索方法,该方法返回字段 如您所见,结果来自两个表的联接。 我发现https://gorm.io/docs/preload.html 但老实说,我不明白我该如何实现我所需要的。 我认为下面的内容可能会有所帮助 问题是,如何从GORM中提到的表格中获得我提到的内容?