【问题标题】:SQL query returns duplicate value after joining tablesSQL查询在加入表后返回重复值
【发布时间】:2022-01-06 13:13:57
【问题描述】:

我需要帮助在 SQL Server 中使用 SUMGROUP BY

我正在根据 5 个表生成查询。我已经在 SQL Server 中尝试过。

查询的某些部分正在运行,但是当我推进查询时,我得到了错误的结果/数据。

问题是数据被处理两次,而不是在每个字段上按组处理一次,例如farmer_ID,农民持有或拥有两条或更多记录的地方。

当我将更多表添加到联接时会发生这种情况 - 在一个或两个表上,总和值是可以的。 因此我得到 farmer_sales = 200 而不是 100。

请告诉我如何获得帮助

谢谢 大卫  

【问题讨论】:

  • 您得到的是笛卡尔结果。请编辑您的帖子并显示您尝试运行的实际查询,我们可以提供帮助。它也可能更好,但如果表格相对简单,则不需要。不要在评论中发布您的代码。
  • 您必须在其中一张表中有骗子。选择不同!

标签: sql-server database join


【解决方案1】:
  1. 您可以使用外连接(左或右)并选择每个项目只有一条记录的表

  2. 另一种解决方案,您可以在列名之前使用 Keyword Distinct

【讨论】:

  • 更好的是在具有多个记录的表上进行预聚合以创建单个记录,这是 JOIN 的基础......但我要求他们编辑和发布查询与通用的,您的答案并没有真正提供。但是,欢迎来到 S/O(真诚地)
【解决方案2】:

如果没有表定义、要求和查询,这里没有人能提供帮助。
对于这些问题,我发现编写查询很有帮助,因此您可以获得所需的正确行。听起来您要么有不可靠的数据,要么有不完整的连接条件,但如果没有上述内容,就无法判断这一点。您可以通过发现问题(例如farmer_sales)并从那里处理原始数据和查询来调试您的数据。您的查询中将有不完整的 PK/FK 关系或缺少允许错误数据的约束。或者你误解了需求或者需求对数据模型没有意义。

一旦查询正常工作,您就可以添加聚合。

我可以给出的一般建议是添加 DISTINCT 几乎总是错误的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    相关资源
    最近更新 更多