2012-04-23 18 views
0

私はかなり新しいSQLです。いくつかのOracleコマンドをSQL Serverに変換しようとしています。問題は、次の結合右外側の変換である:Oracle右外部結合をSQL Serverに変換する

私の知る限り、このようなものであることをセクション「から」で表現する必要があるSQLに理解できるよう
where 
    SOURCE_FORMATS.LOC_SIMPLE_ENTITY_ID = FILEFORMAT_INTERNAL_SIGNATURES.LOC_FILEFORMAT_ID (+) 

from 
    SIMPLE_ENTITIES "SOURCE_FORMATS" 
RIGHT OUTER JOIN FILEFORMAT_INTERNAL_SIGNATURES 
on SOURCE_FORMATS.LOC_SIMPLE_ENTITY_ID = FILEFORMAT_INTERNAL_SIGNATURES.LOC_FILEFORMAT_ID 

されていますこの論理は正しい?

+0

と同じですJOINの - 私はこれをいつでもOracleのフォーマットよりも好むでしょう。 –

+3

いいえ、最初のクエリはLEFT JOINだと思います。 –

+1

Oracleは、10年以上にわたってANSI外部結合構文をサポートしています(2001年のバージョン9.0以降)。古い '(+)'構文は、ANSI結合構文が確立される前のOracleの構文でした。当時の他のRDBMSは '* =' –

答えて

2

外部結合のためのANSI以前の構文では、(+)が不完全であると予想されるテーブルに対して使用され、保存されるテーブルに対しては使用されません。だから、

select * from t1, t2 where t1.col1 = t2.col2 (+) 

はい、これは正しいこと、そしてそれがどのように書くかのANSI規格に準拠するので、それは、あまりにも、*よりよい*ソリューションです

select * from t1 left join t2 on t1.col1 = t2.col2 
+0

などの独自の構文を持っていたと思います。私は単純な例が好きです。ありがとう – Fraser

+0

ありがとうございましたこれは、右結合ではなく、左結合であることを指摘してくれてありがとう – Fraser

関連する問題