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

时间:2013-12-10 10:11:54

标签: php sql sum inner-join

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

当我添加INNER JOIN时,总和值会改变。为什么呢?

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

我做错了什么?

5 个答案:

答案 0 :(得分:1)

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

如果您希望所有数据都在'总计'无论匹配用户如何,你都会在ms-sql中使用LEFT JOIN,我怀疑类似的方法可以在my-sql中使用

答案 1 :(得分:1)

$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;");

使用此希望这将对您有所帮助。

答案 2 :(得分:0)

你应该根据id给出一个“on”。比如

inner join users on users.id = totals.idseller 

另外,sql server将组合表中所有可能的行,这大多数情况下并不是你想要的。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

如果您要加入包含5条记录的用户表。通过连接表,因为没有任何列映射,这个总结5次,这是显示不同值的原因。

请告诉我一些错误。

谢谢, Umehs