我的数据库中有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。
这是数据:
答案 0 :(得分:0)
以下查询适用于您的情况。
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 (SELECT bd.*
FROM bill_details bd
JOIN bills a
ON bd.bill_id = a.bill_id
WHERE a.cus_sup = 1
AND a.archived = 0) b
ON p.prod_id = b.prod_id
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