MySQL,使用子查询的结果对哈希表中的某些行求和

时间:2012-09-05 23:00:47

标签: mysql

我正在尝试使用两个元素对哈希表中的某些行求和:选择一组ID和一个特定键。

以下是设置:

表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 个答案:

答案 0 :(得分:1)

问题是您的查询在Table1Table2之间创建了外部联接,这样无论是否匹配,都会保留Table1的所有记录记录来自Table2。了解SQL joins

您希望改为使用内部联接

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

sqlfiddle上查看。