选择从2选择

时间:2013-12-12 15:51:10

标签: sql sql-server sql-server-2008

我需要一些帮助,我有3张桌子

http://i.stack.imgur.com/TB3MX.jpg

我的代码:

select nazev_produkt,
SUM(mnozstvi_objednavka_dod)'bylo na sklade'
from Produkty p join Objednavky_dodavatele od on 
p.id_produkt=od.id_produkt
where stavzbozi_objednavka_dod=('na skladě')
group by nazev_produkt



select nazev_produkt,SUM(mnozstvi_objednavka_zak)koupili  
from Objednavky_zakaznici oz join Produkty p 
on oz.id_produkt=p.id_produkt
where stav_objednavka_zak=('dodané')
group by nazev_produkt

我想从这两个选中创建选择代码,包括nazev_produkt,'bylo na sklade - koupili'和nazev_produkt小组

基本上 bylo na sklade =有货

koupili =购买。

我需要扣除所购买的 - 有货并显示nazev_produkt(产品名称),na sklade(有货)

非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

添加第三列,列出您的来源。

试试这个:

select nazev_produkt,
isnull(
    (select SUM(mnozstvi_objednavka_dod)
    from Objednavky_dodavatele od 
    where p.id_produkt=od.id_produkt),
0) -
isnull(
    (select SUM(mnozstvi_objednavka_zak)
    from Objednavky_zakaznici oz
    where oz.id_produkt=p.id_produkt),
0)
from Produkty p
where stavzbozi_objednavka_dod=('na sklade')
or stav_objednavka_zak=('dodané')

答案 1 :(得分:0)

我无法阅读你的语言,所以在这里做一些猜测...... :-)我认为,加入的表格在任何情况下都会回答你的问题。

select
   p.product_name,
   --isnull(i.quantity,0) as was_in_stock,
   --isnull(s.quantity,0) as sold,
   isnull(i.quantity,0) - isnull(s.quantity,0) as [currently_in_stock]
from
   products p

   LEFT JOIN (select product_id, sum(quantity) as quantity from inventory group by product_id) i
   ON p.product_id = i.product_id

   LEFT JOIN (select product_id, sum(quantity) as quantity from sales group by product_id) s
   ON p.product_id = s.product_id
group by
   product_name