MySQL Count付费销售和订单

时间:2014-01-28 12:12:55

标签: mysql sql

这是事情: 我有这个Payment_typesSalesPaymentsOrders表,作为订单销售产生付款

因此我的表格是:

Payment_types: id, name (may be a order or a sale)

Payments: id, payment_type_id, sale_id, order_id, price, paid, description

Sales: id, price

Orders: id, price

然后,如果付款是销售,则order_id为空,反之亦然。

然后我将如何选择显示每个表记录销售或订单的价格等于与该ID相关的表支付的总和?并且还想知道我的数据库是否结构正确。

3 个答案:

答案 0 :(得分:1)

您可以尝试以下方式:

SELECT Sales.*
  FROM Sales
 WHERE Sales.price = (
                       SELECT SUM(Payments.price)
                         FROM Payments
                        WHERE Payments.sale_id = Sales.id
                     )

答案 1 :(得分:1)

请尝试以下一次。

Select * 
from Payments p,sales s,ordes o
where (p.sale_id = s.id and p.price= s.price)
or (p.sale_id = o.id and p.price= o.price)
Order by p.id 

答案 2 :(得分:1)

您可以尝试以下方式:

select Sales.id,
    Max(Sales.price) Sales_price,
    Sum(Payment.price) Payment_price
from Sales, Payment
where Sales.id = Payment.sale_id
group by Sales.id
having Max(Sales.price) = Sum(Payment.price)

您的查询无法按预期工作,因为您对聚合的结果使用WHERE子句,但您应该使用HAVING子句。