私は今、PLSQL開発者を扱っていますが、これは初めてです。そして、私はこの種のクエリを見つけました
select * from tableA, tableB
where tableA.field1 = tableB.field1(+)
クエリの の機能が気(+)
になります。皆さん、とても親切に説明していただけますか?
私は今、PLSQL開発者を扱っていますが、これは初めてです。そして、私はこの種のクエリを見つけました
select * from tableA, tableB
where tableA.field1 = tableB.field1(+)
クエリの の機能が気(+)
になります。皆さん、とても親切に説明していただけますか?
where tableA.field1 = tableB.field1(+)
これは、Oracle によって採用された外部結合の古い構文であり、ANSI が実際に SQL 言語を標準化したときに冗長になりました。Oracle自身はouter join
、この古い構文に優先して使用することを提案しています(以下のリンクから):
Oracle結合演算子ではなく
FROM
句構文を使用することをお薦めします。OUTER JOIN
詳細については、Oracle ドキュメントのこのエントリを参照してください。
これは、Oracle SQL OUTER JOIN 構文です。
次のように解釈できます。
select * from tableA
OUTER JOIN tableB ON tableA.field1 = tableB.field1
オラクルのドキュメントから:
(+) 前の列が結合の外部結合列であることを示します。
+
テーブルから、一致したレコードと一致していないレコードを取得するために使用されます。
例:
テーブルA
とテーブルB
のように使用している場合A.column1=B.column1(+)
テーブルから未一致のレコードを取得し、左外部A
結合と呼びます。
として使用できます
select * from tableA right outer join tableB where tableA.field1 = tableB.field1
(+) 演算子は、右側のテーブル (一致するものと一致しないもの) のすべての行を、右側のテーブルの両方の行から返すことを示します。そして、一致する行が左側のテーブルから返されます。
正しいテーブルの行が一致しない場合は、null が返されます。
これは、LEFT OUTER JOIN の Oracle 固有の表記法です。
例:
select ...
from a,b
where a.id=b.id(+)
クエリが書き直される
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id