table A:尺寸組別 組別代碼 尺寸 
01  S
01  M
01  L
01  XLtable B:商品資料檔 型號 尺寸 組別
12345 M 01
12345 L 01table C:出貨資料檔 型號 尺寸 數量
12345 L 1出貨資料可能更多商品,
但是無論該有多少商品,
都希望出表時依照商品資料中的組別,
再對照到尺寸組別出表,
例如:上面的出貨,希望出表時,格式如下:
型號 尺寸 數量
12345 S 0
12345 M 0
12345 L 1
12345 XL 0請問Select語法該如何下?

解决方案 »

  1.   

    table A:尺寸組別 
    組別代碼 尺寸 
    01        S
    02        M
    03        L
    04        XL这个表A应该是这样的吧table B:商品資料檔 
    型號   尺寸 組別
    12345   M    01
    12345   L    01table C:出貨資料檔 
    型號   尺寸 數量
    12345   L     1那你这个其实不难SELECT C.型號,
           C.尺寸,
           C.數量
    FROM A,C
    WHERE A.尺寸 = C.尺寸
    ORDER BY C.型號 ASC 
             ,A.組別代碼 ASC
    table B:商品資料檔 的作用是什么呢?? 是表示已经存在的商品种类??
      

  2.   

    謝謝大家!
    我的意思是說,每個尺寸都會對應到一個組別,
    尺寸組別裡有多個尺寸,
    例如:M尺寸屬於01組別,而01組別中包含S、M、L、XL出貨時不一定每個尺寸都出,也許只出M尺寸,
    可是我希望查詢出來,會依照M尺寸所在的組別所有尺寸出表,
    例如:12345這個商品只有出M一件,
    如果單查出貨會出現如下:
    12345    M      1
    但是我希望依照組別所有尺寸出,如下:
    12345    S      0
    12345    M      1
    12345    L      0
    12345    XL      0
    不知道這樣的解釋大家是否能懂?
    謝謝!
      

  3.   

    是不是这个意思
    select e.型號,e.尺寸,nvl(c.数量,0)
    from 
      (select d.型號,a.尺寸  
      from a ,(select distinct 型號, 組別 from b) d 
      where a.組別 =d.組別 
      ) e
    left join c
    on e.型號=c.型號 and e.尺寸=c.尺寸
      

  4.   

    感謝回覆!
    我將語法改成table,如下:
    select e.prd2001,e.prd2002,nvl(exp21.exp2105,0)
    from (select d.prd2001,prd10.prd1003 prd2002  
       from prd10,exp21 ,(select distinct prd2001, prd2003 
    from prd20) d 
       where prd10.prd1001 =d.prd2003) e 
    left join exp21 on e.prd2001=exp21.exp2102 
    and e.prd2002=exp21.exp2103;
    在SQL*Plus下執行,出現下面的錯誤訊息,
      left join exp21 on e.prd2001=exp21.exp2102
      *
     ERROR 在行 6:
    ORA-00933: SQL 命令的結束有問題請問有哪裡錯誤嗎?謝謝!