使用多个连接和求和函数进行查询,给出错误的总数或总和
Posted
技术标签:
【中文标题】使用多个连接和求和函数进行查询,给出错误的总数或总和【英文标题】:Query with multiple joins and sum function giving wrong total or sum 【发布时间】:2012-10-04 17:49:46 【问题描述】:已发布查询检索所有相关字段,但 SUM(af_py_commission)
函数导致问题如 in,它只是在末尾添加一个额外的零,然后在右端添加一个额外的零。
例如如果答案是 45,它将给出 450,并且该字段的数据格式是浮动的,否则此查询工作完美....
我尝试了一个在同一字段上使用相同函数但没有连接的简单查询,因此它可以正常工作并给出正确的答案。谁能帮助我在这方面做错了什么>??
SELECT f.af_id AS af_if
, aff_cust_tbl.af_id AS cu_af_id
, aff_payment_tbl.af_cust_id AS pym_cus_id
, SUM(af_py_commission)
FROM aff_tbl AS f
INNER JOIN aff_tbl ON f.af_id = 2
INNER JOIN aff_cust_tbl ON aff_cust_tbl.af_id = 2
INNER JOIN aff_payment_tbl ON aff_payment_tbl.af_id = 2;
【问题讨论】:
英语和语法错误是不可取的。请改写你的话。 你在其他表中也有 af_py_commission 作为字段吗?尝试写全名,例如SUM(f.af_py_commission)
是否属于表 f
(别名)
不,它只在一个表中,即 aff_payment_tbl 但也尝试了 sum(aff_payment_tbl.af_py_commission) 但同样的问题
【参考方案1】:
inner join有错误
试试这个:
SELECT
f.af_id AS af_if,
aff_cust_tbl.af_id AS cu_af_id,
aff_payment_tbl.af_cust_id AS pym_cus_id,
SUM(af_py_commission)
FROM aff_tbl AS f
INNER JOIN aff_tbl as f2
ON f.af_id = 2 AND f2.af_id=2
INNER JOIN aff_cust_tbl
ON aff_cust_tbl.af_id = 2
INNER JOIN aff_payment_tbl
ON aff_payment_tbl.af_id = 2;
编辑的行是
INNER JOIN aff_tbl as f2
ON f.af_id = 2 AND f2.af_id=2
试试这个:
SELECT f.af_id AS af_if,
aff_cust_tbl.af_id AS cu_af_id,
aff_payment_tbl.af_cust_id AS pym_cus_id,
Sum(af_py_commission)
FROM aff_tbl AS f
INNER JOIN aff_cust_tbl
ON f.af_id = aff_cust_tbl.af_id
INNER JOIN aff_payment_tbl
ON aff_payment_tbl.af_id = aff_cust_tbl.af_id
WHERE f.af_id = 2;
如果它没有给出正确的结果,请尝试不求和并在此处进行后分析...
【讨论】:
以上查询给出此错误 1054...''查询:SELECT f.af_id AS af_if、aff_cust_tbl.af_id AS cu_af_id、aff_payment_tbl.af_cust_id AS pym_c... 错误代码:1054 未知列 'f “字段列表”中的 .af_py_commission 执行时间:00:00:00:000 传输时间:00:00:00:000 总时间:00:00:00:000 @user1578993 很抱歉,虽然af_py_commission
是aff_tbl
的一列,但显然不是,我已经编辑了查询
嗨 ankur,我已经尝试过您编辑的查询,但它给出了一些完全不同的结果,所以我尝试了自己的查询,但没有 sum(),结果每个字段几乎有 10 个重复项,并且它把它们都加了,所以我把 GROUP BY 但是它没有添加字段AS f INNER JOIN aff_tbl ON f.af_id = 2 INNER JOIN aff_cust_tbl ON aff_cust_tbl.af_id = 2 INNER JOIN aff_payment_tbl ON aff_payment_tbl.af_id = 2 ;
所以我得出的结论是,我在 sql 连接概念中遇到了问题,但你真的帮助了我,没有你的帮助我找不到它,因为你建议对上述解决方案进行不同的查询,所以谢谢很多ankur你能指导我或帮助我从哪里可以获得高级水平和重点教程或关于数据库和sql的知识,基本上再次根据开发点再次感谢
@user1578993 你可以先从 w3school 教程w3schools.com/sql/default.asp 开始,然后你可以尝试 Pl/SQL plsql-tutorial.com,但也要记住你在练习时学到的最多,所以创建数据库并编写很多查询【参考方案2】:
如果使用聚合函数,您可能缺少GROUP BY
子句。试试这个:
SELECT
f.af_id AS af_if,
aff_cust_tbl.af_id AS cu_af_id,
aff_payment_tbl.af_cust_id AS pym_cus_id,
SUM(af_py_commission)
FROM aff_tbl AS f
INNER JOIN aff_tbl
ON f.af_id = 2
INNER JOIN aff_cust_tbl
ON aff_cust_tbl.af_id = 2
INNER JOIN aff_payment_tbl
ON aff_payment_tbl.af_id = 2;
GROUP BY f.af_id
【讨论】:
使用和不使用 GROUP BY 的两个查询给出相同的结果以上是关于使用多个连接和求和函数进行查询,给出错误的总数或总和的主要内容,如果未能解决你的问题,请参考以下文章