0

ID の選択グループと特定のキーの 2 つの要素を使用して、ハッシュ テーブルから特定の行を合計しようとしています。

セットアップは次のとおりです。

表1:

ID  KEY      VALUE
1   name     John Doe
1   amount   10
2   name     Jane Doe
2   amount   15
3   name     Mike Lowry
3   amount   5

表 2:

ORDERID   TYPE      TRANSACTIONID
1001      Purchase  1
1002      Donation  2
1003      Purchase  3 

タイプが「購入」のすべての金額の合計を取得しようとしています。私が使用しているクエリは次のとおりです。

SELECT SUM(Table1.value) as balance 
FROM Table1
LEFT JOIN (SELECT Table2.TRANSACTIONID as TID FROM Table2 WHERE Table2.TYPE = "Purchase" ) as ids 
ON Table1.ID = ids.TID
WHERE Table1.key = "amount"

それを微調整して、私は0とすべての行の合計を得ることができましたが、1つの結果だけではありません. アイデア?

4

1 に答える 1

1

問題は、一致するレコードが から見つかったかどうかに関係なく、のすべてのレコードが保持されるように、クエリが と の間に外部結合を作成することです。SQL 結合について学習します。Table1Table2Table1Table2

代わりに内部結合を作成します。

SELECT SUM(VALUE)
FROM   Table1 JOIN Table2 ON Table1.ID = Table2.TRANSACTIONID
WHERE  Table1.KEY = 'amount' AND Table2.TYPE = 'Purchase'

sqlfiddleで参照してください。

于 2012-09-05T23:02:08.870 に答える