2

我需要从 2 个表中计算一些数据。当我进行手动或(计算器)计算时,我得到的输出与使用查询时不同。谁能指出错误是什么?

当我进行手动计算时,我得到“10”作为总卡,但是当我运行这个查询时,我得到“41”。这是否与与列 tbltrans.card 没有任何关系的索引有关。

这是代码:

select
    ifnull((tbltrans2.qty*tbltrans2.price*(tbltrans.Discountper/100)),0) Total,
    ifnull(sum(tbltrans.card),0) totalcard
from tbltrans2,tbltrans
where tbltrans2.transid = tbltrans.transid 
    and tbltrans.saledate='06/01/2013'

这是我的 tbltrans: 在此处输入图像描述 和 tbltrans2: 在此处输入图像描述

4

1 回答 1

1

每个交易有多个项目,因此card每个项目记录的字段将显示一次,因此每个交易将多次汇总。

您的查询还有另一个问题:您sum对列使用聚合函数 ( ) card,但对其他值没有聚合。然后发生的事情是 SQLite为这些值计算一个总和,从而产生一个结果记录。为了计算这个结果记录的值,SQLite 不知道要使用哪个/记录,所以它只使用这些表中的一个随机记录。cardTotaltbltranstbltrans2

要计算正确的totalcard值,您不能tbltrans2在同一个查询中加入表:

SELECT ifnull(sum(tbltrans.card), 0) AS totalcard
FROM tbltrans
WHERE tbltrans.saledate = '06/01/2013'

Total值可以使用子查询计算,但这取决于它的含义。(每笔交易的总折扣?当天所有交易的总折扣?)

于 2013-01-06T12:07:42.657 回答