Mysql查询,包括来自其他表中列的两个总和

时间:2012-07-02 15:02:03

标签: mysql left-join

从另一个表中运行一个求和的查询,它完美地运行(并从该论坛获得):

SELECT
    R.REP_ID as repid, R.REP_DESBREV as repdesc, 
    IFNULL(SUM(RD.REPDATA_CANT), 0) as cant
FROM 
    REPUESTOS R 
LEFT JOIN 
    REP_DATA RD, ON RD.REPDATA_REPID = R.REP_ID 
GROUP BY 
    RD.REPDATA_REPID

现在,问题是我想添加一个额外的列来获得总库存(类似

IFNULL(SUM(I.INV_CANT), 0) as inv) 
FROM table INVENTARIO I
WHERE I.INV_REPID = R.REP_ID

这个值可以通过JOIN获得,就像我们得到第一个有效的语句一样,但我还没有找到在一个查询中包含BOTH SUMS的方法。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

尝试此查询示例

select 
t1.id,
ifnull(sum(t1.my_column),0) as Sum1,
ifnull(other.sum,0) as Sum2
from table as t1
left join (select id , sum(other_table_column) from other_table group by id) as other
on t1.id = other.id
group by t1.id

答案 1 :(得分:0)

我刚刚实施了以下声明:

SELECT
    R.REP_PARNUM as parnum,
    R.REP_ID as repid,
    R.REP_DESBREV as repdesc,
    IFNULL(SUM(RD.REPDATA_CANT),0) as cant,
    IFNULL(SUM(I.INV_CANT),0) as intt
FROM REPUESTOS R
LEFT JOIN REP_DATA RD ON RD.REPDATA_REPID = R.REP_ID
LEFT JOIN INVENTARIO I ON I.INV_REPID = R.REP_ID
GROUP BY R.REP_PARNUM

它确实在运行,但问题在于它给了我一些奇怪的价值。例如,第一个总和列(REPDATA_CANT)中的某些值显示为-3,即如果实际结果为20,则显示17,依此类推。在第二个总和列(INV_CANT)中,它实际上是MULTIPLIES(在某些行中,而不是全部),值为3.非常奇怪的行为,你知道为什么吗?

相关问题