0

別のテーブルから 1 つの合計を実行するクエリを取得しました。これは完全に機能します (このフォーラムからも取得されます)。

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 を使用して取得できます。最初に機能するステートメントを取得したのとまったく同じ方法で取得できますが、1 つのクエリだけに BOTH SUMS を含める方法が見つかりませんでした。

何か案は?ありがとう!

4

2 に答える 2

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
于 2012-07-02T15:08:03.767 に答える
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 と表示されます。2 番目の合計列 ( INV_CANT) では、実際には (すべてではなく一部の行で) 値が 3 倍になっています。

于 2012-07-03T14:13:50.170 に答える