$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
我做错了什么?
答案 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