2013-08-01 1 views
0

У меня есть этот запрос и успешно получает totstockВыберите SUM из двух других таблиц

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 

, но когда я попытался присоединиться к моей второй таблице он получает неправильное общее totstock и totsales У меня есть этот запрос, но я думаю, что это это неправильно

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 

продаж - ТПС

pid | qty 
    1 | 2 
    1 | 1 

Результат я хочу

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

«totstock» и «totsales» - это больше, чем я хочу. я думаю, удвоено или утроено – kashimu

ответ

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 Fiddle Demo

+0

спасибо, сэр! он получает теперь правильное значение .. У меня нет идеи, что я могу выбрать также в 'LEFT JOIN' – kashimu

+0

@kashimu ваш приветствовать всегда ... –

+0

@Parado спасибо. –

0

Попробуйте также группу на p.product_name. Я думаю, что исправит проблему .