0

私は 2 つの SQL テーブルを持っておりpurchasesentいつでも商品の未払い残高を知りたいです。このために、私は取ろうとしていますsum(puchase.quantity) - sum(sent.quantity) where date<some date。個々のクエリを作成できますが、それらを組み合わせる方法がわかりません。

個々のクエリは次のとおりです。

select item,sum(quantity) from sent where datee <'some date' group by item
select item,sum(quantity) from purchase where datee<'some date' group by item

未払い残高を取得するためのより良い方法があれば教えてください。

前もって感謝します。

4

2 に答える 2

1

たぶん、あなたが望むものを得るもっと簡潔な方法があるかもしれませんが、次のことは正しい結果を与えるはずです:

SELECT s.item, 
        s.qty as total_sent, 
        COALESCE(p.qty,0) as total_purchase, 
        s.qty - COALESCE(p.qty,0) as stock
FROM 
(
  SELECT item, sum(quantity) as qty
  FROM sent 
  GROUP BY item
) s
LEFT JOIN 
(
  SELECT item, sum(quantity) as qty
  FROM purchase
  GROUP BY item
) p
ON p.item = s.item
于 2013-09-14T22:28:23.217 に答える
1

私はあなたがこれを望んでいると思います

これが動作中のデモSQLFiddleです

CREATE TABLE sent
(
item int,
quantity int
);

CREATE TABLE purchase
(
item int,
quantity int
);

insert into sent values(1,4);
insert into sent values(2,7);
insert into sent values(3,9);
insert into sent values(4,5);
insert into sent values(5,9);

insert into purchase values(1,2);
insert into purchase values(2,5);
insert into purchase values(3,3);
insert into purchase values(4,2);
insert into purchase values(5,7);


select sent.item , (sum(IFNULL(sent.quantity,0)) - sum(IFNULL(purchase.quantity,0))) as diff 
FROM sent  , purchase Where sent.item = purchase.item group by sent.item
于 2013-09-14T19:04:02.467 に答える