0

次の2つのテーブルがあります。

 content:
 ========
 cid | iid | qty
 ---------------
   1 |   7 | 42
   2 |   7 |  1
   3 |   8 | 21

 ret:
 ====
 rid | cid | qty
 --------------
   1 |   1 |   2
   2 |   1 |  10
   3 |   2 |   1

content.qty各 iid について、 の合計を取得したいと思います。ret.qty たとえば、特定のテーブルについて、結果は次のようになります。

iid=7, SUM(content.qty) = 43, SUM(ret.qty)=13

iid=8, SUM(content.qty) = 21, SUM(ret.qty)=0

1回のクエリでそれを行う方法はありますか?

よろしくお願いします!

4

1 に答える 1

0

合計を重複させたくないので、これは少し複雑です。この問題を解決するには、集計をサブクエリとして個別に実行します。1 つ目は、列を取得するためにfromにcontent戻る 2 つ目の結合に直接あります。contentretiid

次のクエリはこのアプローチに従い、cidが の一意のキーであると想定していcontentます。

select c.iid, c.qty + coalesce(r.qty, 0)
from (select c.iid, SUM(qty) as cqty
      from content c 
      group by c.iid
     ) c left outer join
     (select c.iid, SUM(r.qty) as rqty
      from ret r join
           content c
           on r.cid = c.cid
      group by c.iid
     ) r
     on c.iid = r.iid;
于 2013-05-29T16:16:13.193 に答える