OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

PL/SQLの質問です。

  • 困ってます
  • 質問No.177036
  • 閲覧数237
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 27% (43/159)

PL/SQLでビューを作るため、ソースを解析していたら以下のような構文が出てきました。

FROM
T_aC,
M_bCD1,
M_cCD2
WHERE
CD1.CODEID(+)='6'AND
CD1.CODENO(+)=C.xAND
CD2.CODEID(+)='5'AND
CD2.CODENO(+)=C.KJNHJNKBN

僕が分らないところは WHERE句の中にある(+)の部分です。
これの意味はいったい何なのでしょうか。
ご存知の方がいらしたらご教授ください。
宜しくお願い致します。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 40% (86/214)

これは表の結合条件を示す記号です。
外部結合を行う際に、「優先されない側」の表の列名に(+)記号をつけます。

 表の結合を行う場合には、外部結合と内部結合があります。
内部結合とは両方の表の当該列に同じ値を持つものをだけを抜き出すものです。
つまり片方の表にしかないものは漏れてしまうことになります。
また同じ値がダブってしまうと特定できません。

 一方、外部結合では、ある列に対応する同じ値の行が存在しなくても(または同じものがダブっていても)、相方の表のすべての行を出力します。

 たとえば、以下のような表があるとします。

表A:             表B:
VALUE CODE PRICE    CODE COLOR
  100  0A   300    0A  red
  101  0B   150    0B  blue
  102  0A   250    0F white
  103  0D   600

これを内部結合で、表A.CODE = 表B.CODE を条件とすると、
CODE:0A が表A でダブっているのでうまくいきません。

一方、外部結合で 表A.CODE = 表B.CODE(+) としてやると、
表Aに含まれる行がすべて取り出され、表Bの該当行(0A、0B)が結合されて出力されます。

SELECT VALUE,PRICE,COLOR
FROM 表A A, 表B B
WHERE 表A.CODE=表B.CODE(+);

出力結果:
VALUE PRICE COLOR
 101  300   red
 102  150   blue
 103  250   red
 104  600

CODE が 0D の行では、表B に該当するコードがありませんので COLOR を出すことが出来ませんが、CODE が 0A の行はダブっていても該当する行を取り出してくれています。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル12

ベストアンサー率 30% (264/874)

PL/SQL...Oracle ですよねー。 ならば、これは外部結合のことだと思いますが。 ...続きを読む
PL/SQL...Oracle ですよねー。
ならば、これは外部結合のことだと思いますが。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ