这是事情:
我有这个Payment_types
,Sales
,Payments
和Orders
表,作为订单销售产生付款
因此我的表格是:
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相关的表支付的总和?并且还想知道我的数据库是否结构正确。
答案 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子句。