【发布时间】:2015-09-22 02:32:57
【问题描述】:
我的数据库中有 3 个表
我想从 bill_Details 表中检索所有产品及其数量。 这是查询:
SELECT p.prod_Id,p.prod_Name,COALESCE(sum(b.de_Quantity+b.de_Bonus),0)
,p.prod_Cost,p.prod_ExpDate,p.prod_BonusInfo,p.prod_Note
FROM (products p
LEFT JOIN bill_Details b
ON p.prod_Id=b.prod_Id)
LEFT JOIN bills a
ON b.bill_Id = a.bill_Id and a.cus_Sup=1 and a.archived=0
GROUP BY p.prod_Id, p.prod_Name,p.prod_Cost,p.prod_ExpDate,p.prod_BonusInfo,
p.prod_Note
ORDER BY p.prod_Name asc
问题在于,当 a.cus_Sup=1 或 a.cus_Sup=0 时,此查询检索到相同的数量! 知道当 a.cus_Sup=0 数量应为 0 时,当 a.cus_Sup=1 时,特定产品的数量应为 29.5。
这是数据:
【问题讨论】:
-
Try a where : select p.prod_Id,p.prod_Name,COALESCE(sum(b.de_Quantity+b.de_Bonus),0) ,p.prod_Cost,p.prod_ExpDate,p.prod_BonusInfo,p .prod_Note from (products p left JOIN bill_Details b on p.prod_Id=b.prod_Id) left JOIN bills a on b.bill_Id = a.bill_Id group by p.prod_Id,p.prod_Name,p.prod_Cost,p.prod_ExpDate,p .prod_BonusInfo, p.prod_Note 按 p.prod_Name asc 排序 where(a.cus_Sup=1 and a.archived=0)
-
@jdweng 我们不能在“group by”之后放置 where 子句。您的查询将不会执行。谢谢。