当我向查询添加内部联接时,查询中的 SUM 值会更改


SUM value from query changes when i add inner join to the query

    $sql = mysql_query("SELECT totals.*, sum(totals.payments) as total_payments
FROM totals
    INNER JOIN users
    GROUP BY totals.idseller;");

当我添加内部连接时,总和值发生了变化。为什么?

在我的SQL表中,我有一个记录的总宽度,这个值:8943.09,但是当我做一些时,结果给了我这个值:44715.45

我做错了什么?

$sql = mysql_query("SELECT totals.*, sum(totals.payments) as total_payments FROM totals
INNER JOIN users ON totals.idseller = users.idseller
GROUP BY users.UserName;");

使用这个希望这会帮助你。

当您 INNER JOIN 到另一个表时,返回的数据集将被修改为仅包含两个表中存在的行。在这种情况下,"总计"中的行很可能在用户中没有匹配的行 - totals.idseller 字段可能接受空值,或者在删除或编辑匹配的用户时数据已成为孤立项。

如果您希望所有数据都在"总计"中,而不管匹配的用户如何,您将在ms-sql中使用LEFT JOIN,我怀疑类似的方法将在my-sql中起作用

您应该根据 id 给出一个"on"。如喜欢

inner join users on users.id = totals.idseller 

其他方式,sql 服务器将合并表中所有可能的行,这在大多数情况下不是您想要的。

因为当您在 SQL 查询中添加内部联接时,这意味着您正在选择两个表中通用的数据。前任:

SELECT * FROM TABLE_A
INNER JOIN TABLE_B 
ON TABLE_A.ID = TABLE_B.ID

如果您要连接包含 5 条记录的用户表。通过连接表,由于没有任何列映射,此汇总 5 次,这就是显示不同值的原因。

请让我知道其中的错误。

谢谢乌梅斯