在做一个进销存软件:
有商品表 Goods 和库存表 Stock
商品表字段:    
Goodsid 商品编码 , Goodsname商品名称 
 001                  A                   
 002                B
 003                C
 004                D
 005                E
....                 ....
库存表字段:
Goodsid商品编码,Stockid仓库编码,Quantity库存数量
  001                01              10
  002                01              10
  003                01              20
  001                02              30
  002                02              40
当选择仓库编码01 后查询所有商品在该仓库的库存,库存表中不一定包含所有商品的数据
即该表    Goodsid   Goodsname  Stockid   Quantity
          001        A          01        10
          002        B          01        10
          003        C          01        20
          004        D          01         0
          005        E          01         0
         ................................... 
SQl语句该如何写???

解决方案 »

  1.   

    楼主的意思是 004 005在库存表中没有,但还是想查询出来显示为0是吧 ? 如是是这样 
    测试数据
    create table Goods(GoodID varchar(10) , GoodName varchar(100))
    insert into Goods values('001' , 'A')
    insert into Goods values('002' , 'B')
    insert into Goods values('003' , 'C')
    insert into Goods values('004' , 'D')
    insert into Goods values('005' , 'E')
    GOcreate table Stock (GoodID varchar(10) , StockID varchar(10), Quantity int)
    insert into Stock  values('001' , '01', 10)
    insert into Stock  values('002' , '01',10)
    insert into Stock  values('003' , '01',20)
    insert into Stock  values('001' , '02',30)
    insert into Stock  values('002' , '02',40)
    GOSELECT G.GoodID, G.GoodName, ISNULL(S.StockID, '01') AS StockID, ISNULL(S.Quantity, 0) AS Quantity
    FROM Goods G LEFT JOIN 
    Stock S ON G.GoodID = S.GoodID AND STOCKID = '01'
      

  2.   

    select goods.goodsid,goods.goodsname,stock.stockid,stock.Quantity  from goods,stock where goods.goodsid=stock.goodsid 
      

  3.   

    刚才没看全查询条件,上面那个不对,用这个
    sql.add('select goods.goodsid,goods.goodsname,stock.stockid,stock.Quantity  from goods,stock where goods.goodsid=stock.goodsid and stock.Stockid=''01''')
      

  4.   

    真是太失败了,还是没看清楼主的要求。应该这样
    select goods.goodsid,goods.goodsname,isnull(stock.stockid,0) as stockid,isnull(stock.Quantity,0) as Quantity  from goods left join stock on goods.goodsid=stock.goodsid and stock.Stockid='01'
      

  5.   

    select b.goodsid, b.goodsname, '01', nvl(a.quantity, '0') quantity
      from (select * from stock where stockid = '01') a
     right join (select * from goods) b on a.goodsid = b.goodsid;'01' 处使用你需要的仓库号替换,代码未测试
      

  6.   

    谢谢各位大哥的支持,notebook800 给出的是我要的结果,即不论我选择哪个仓库,都要列出所有商品数据,库存中没有的商品数据的要填入0,和所查询的库存编码,右连接可以!
    再次多谢各位大哥支持!!