0

我有这个查询并成功获得totstock

SELECT p.pid,p.product_name,SUM(s.qty) as totstock
FROM tblproducts p
LEFT JOIN tblstocks s ON s.pid=p.pid
GROUP BY p.pid

但是当我试图加入我的第二张桌子时,它的总数是错误的totstocktotsales 我有这个查询,但我认为这是错误的

SELECT p.pid,p.product_name,SUM(s.qty) as totstock,SUM(sl.qty) as totsale
FROM tblproducts p
LEFT JOIN tblstocks s ON s.pid=p.pid
LEFT JOIN tbls sl ON sl.pid=p.pid
GROUP BY p.pid

产品 - tblproducts

pid  |   product_name
 1   |  pencil
 2   |  paper 

股票 - tblstocks

 pid  |  qty 
 1    |   1
 1    |   3
 1    |   5

销售 - tbls

 pid  |  qty
  1   |   2
  1   |   1

我想要的结果是

pid  | name    | totstock | totsales
 1   |  pencil |    9     |    3  
 2   |  paper  |  NULL    |  NULL
4

2 回答 2

3
SELECT p.pid,p.product_name,totstock, totsale
FROM tblproducts p
LEFT JOIN (Select pid, Sum(qty) as totstock from tblstocks group by pid)  s ON s.pid=p.pid
LEFT JOIN (Select pid, Sum(qty) as totsale from tbls group by pid) sl ON sl.pid=p.pid

Sql 小提琴演示

于 2013-08-01T05:06:29.990 回答
0

也可以在 p.product_name 上尝试分组。我认为这将解决问题。

于 2013-08-01T05:07:52.843 回答