我试图计算一天内售出的商品的成本和一天内给出的总折扣。
表格结构
sale Table
invoice_no | bill_date | discount | ...
子表是(invoice_no是带销售表的FK)
sale_items Table
invoice_no | item_no | cost_price | qty
此查询正常
SELECT (SELECT SUM(p.cost_price*p.qty) FROM sale_items p
WHERE p.invoice_no=s.invoice_no) as tcost_amount
FROM sale s
WHERE bill_date= '2017-05-26'
但是当我想从父表中计算折扣时,tcost_amount
总结了子表中没有bill_date条件的所有行,我很困惑。
SELECT SUM(discount), (SELECT SUM(p.cost_price*p.qty)
FROM sale_items p
WHERE p.invoice_no=s.invoice_no) as tcost_amount
FROM sale s
WHERE bill_date= '2017-05-26'
我的问题是为什么bill_date= '2017-05-26'
条件在第二种情况下不适用于sale_items
?
答案 0 :(得分:1)
至少,您需要加入表格。像这样的东西:
select (sum(si.cost_price * si.qty) - s.discount)
from sale s
inner join sale_items si on si.invoice_no = s.invoice_no
where s.bill_date = '2017-05-26'