none
關於多個Table join的問題 RRS feed

  • 問題

  •  

    假設有A, B, C, D四個Table,ID為Key。

     

    若以Table A之ID為基準(Base)資料表,欲取得Table B, C, D其餘相關資料,可以運用LEFT OUTER JOIN,但我想請教的是如下:

     

    以Oracle的寫法可用

     

    SELECT a.*,

                 b.name,b.phone,

                 c.salary,c.position,

                 d.order_id,d.order_product,d.price,d.order_unit

    FORM    Table A a,

                 Table B b,

                 Table C c,

                 Table D d

    WHERE a.id = b.id (+)

                 a.id = c.id (+)

                 a.id = d.id (+)

     

    而MSSQL 2005是否可用如下的寫法

     

    SELECT a.*,

                 b.name,b.phone,

                 c.salary,c.position,

                 d.order_id,d.order_product,d.price,d.order_unit

    FORM    Table A a,

                 Table B b,

                 Table C c,

                 Table D d

    WHERE a.id (+) = b.id

                 a.id (+) = c.id

                 a.id (+) = d.id

    2007年11月13日 下午 03:44

解答

  •  

    關於(+)這個符號是Oracl專用的,而這個符號也不在SQL92的標準中,所以MS Server 200x是不支援的,而在MS Server上你可以原本的Left Outer Join的寫法。

     

    SELECT a.*,

                 b.name,b.phone,

                 c.salary,c.position,

                 d.order_id,d.order_product,d.price,d.order_unit

    FORM    Table A a

                  left outer join Table B b on a.id = b.id

                  left outer join Table C c on a.id = c.id

                  left outer join Table D d on a.id = d.id

    2007年11月13日 下午 04:34
  • 原來不是SQL92的標準,謝謝您的解惑,非常感激
    2007年11月26日 下午 02:37

所有回覆

  •  

    關於(+)這個符號是Oracl專用的,而這個符號也不在SQL92的標準中,所以MS Server 200x是不支援的,而在MS Server上你可以原本的Left Outer Join的寫法。

     

    SELECT a.*,

                 b.name,b.phone,

                 c.salary,c.position,

                 d.order_id,d.order_product,d.price,d.order_unit

    FORM    Table A a

                  left outer join Table B b on a.id = b.id

                  left outer join Table C c on a.id = c.id

                  left outer join Table D d on a.id = d.id

    2007年11月13日 下午 04:34
  • 原來不是SQL92的標準,謝謝您的解惑,非常感激
    2007年11月26日 下午 02:37