0

我有以下三个表格。为了更好地理解,这里进行了简化。

简化表 有订单,有作家。每个作家都被分配了一个特定的writer_alias。作家为他完成的每个订单获得报酬,并且该订单也得到批准(当 order_status 为 1 时)。但仅当已批准订单的总金额之和大于 200 美元时。

我需要计算 ACID_COST 或 IMMEDIATE_PAYABLE ,这将等于总和大于 200 美元且该特定订单的 payment_status 为 0 的任何作者的成本总和。我不确定我是否能够在这里解释。这是我所达到的,但它只计算所有已批准订单金额的总和。

"SELECT SUM(tblpayment.amount) AS PAYABLES FROM tblpayment, tblorder WHERE tblorder.order_alias=tblpayment.order_alias AND tblorder.order_status=1 AND tblpayment.payment_status=0"

在这种情况下,此处所需的答案可能是 0,因为 writer_alias(16) 批准的数量是 30,小于 200,而 writer_alias(15) 批准的数量是 10,又小于 200。

任何帮助将不胜感激。

编辑: 更正的表格图片在这里。

在此处输入图像描述

4

2 回答 2

1

您不能在WHERE子句中使用聚合函数的结果。相反,您应该使用HAVING,如下所示:

SELECT tblorder.writer_alias, SUM(tblpayment.amount) AS PAYABLES
FROM tblpayment, tblorder
WHERE tblorder.order_alias = tblpayment.order_alias
  AND tblorder.order_status = 1
  AND tblpayment.payment_status = 0
GROUP BY tblorder.writer_alias
HAVING SUM(tblpayment.amout) > 200
于 2013-10-18T11:49:56.997 回答
0
SELECT SUM(tblpayment.amount) AS PAYABLES 
FROM   tblpayment, tblorder 
WHERE  tblorder.order_alias=tblpayment.order_alias 
AND    tblorder.order_status=1 
AND    tblpayment.payment_status=0
and    PAYABLES > 200
group by writer_alias

像这样的东西?

于 2013-10-18T10:52:26.633 回答