2011-09-21 106 views
1

我有数据2表这样有条件从另一个表的SUM()?

Transaction

ID | Amount 
1 | 200 
2 | 300 
然后我使用查询

SELECT `transaction`.id AS `id`, 
    `transaction`.amount AS amount, 
    SUM(payment.amount) AS payment, 
    `transaction`.amount - SUM(payment.amount) AS balance 
FROM `transaction` 
LEFT JOIN payment 
    ON payment.`transaction` = `transaction`.id 
GROUP BY payment.`transaction`; 

,然后我得到这样

数据

Payment

ID | Transaction | Amount 
1 | 1   | 200 
2 | 2   | 150 
3 | 2   | 100 

id | amount | payment | balance 
1 | 200 | 200  | 0 
2 | 300 | 250  | 50 

现在我该怎样做条件,仅显示其余额大于0?
这是应该只显示一行ID 2

我试图做到这一点查询,但它给我的错误。

SELECT `transaction`.id AS `id`, 
    `transaction`.amount AS amount, 
    SUM(payment.amount) AS payment, 
    `transaction`.amount - SUM(payment.amount) AS balance 
FROM `transaction` 
LEFT JOIN payment 
    ON payment.`transaction` = `transaction`.id 
WHERE `transaction`.amount - SUM(payment.amount) > 0 
GROUP BY payment.`transaction`; 

谢谢
Gusde

回答

2

“具有” SQL子句则你在找什么。它像“WHERE”,除了它在JOINS和GROUP BY之后运行,并允许基于几乎最终的输出进行过滤。这对查找已加入表格之间的缺失关系也很有用。

SELECT `transaction`.id AS `id`, 
    `transaction`.amount AS amount, 
    SUM(payment.amount) AS payment, 
    `transaction`.amount - SUM(payment.amount) AS balance 
FROM `transaction` 
LEFT JOIN payment 
    ON payment.`transaction` = `transaction`.id 
GROUP BY payment.`transaction` 
HAVING balance > 0; 
+0

感谢您给予充分的解释:) – GusDeCooL

+0

欢迎您 –

相关问题