
テーブル結合について、下記SQLをANSI結合の書き方で表したい。
select *
from
(select key from A
union
select key from B
union
select key from C) X,
A,B,C
where X.key=A.key(+) and X.key=B.key(+) and X.key=C.key(+)
このSQLをANSI結合の記述で書きたいのですが、
(+)での結合文になれておらず試行錯誤しております。
下記のようなのかなとは模索しておりますが、
手元に実行環境がなくわかりません。
また、要所気付く点などありましたら、ご指摘願います。
select A.*, B.*, C.*
from
(select key from A
union
select key from B
union
select key from C) X,
LEFT JOIN A
ON X.key=A.key
LEFT JOIN B
ON X.key=B.key
LEFT JOIN C
ON X.key=C.key
No.3ベストアンサー
- 回答日時:
敢えていうなら、Xの後のカンマが不要です。
select *
from
(select key from A
union
select key from B
union
select key from C) X
LEFT JOIN A ON X.key=A.key
LEFT JOIN B ON X.key=B.key
LEFT JOIN C ON X.key=C.key
Aテーブルのkey、Bテーブルのkey、Cテーブルのkeyが重複する可能性があり、
keyが重複する場合は、単純横展開ではなく、1行にしたいという条件であれば、
(+)を単純にLEFT OUTER JOINにするだけで良いと思います。
No.2
- 回答日時:
>aテーブルでジョイントする理由は1レコード単位での
>抽出としたいがためです大変参考になりました
>ありがとうございます
横展開したいだけならUNIONで項目をずらしていけばいいのではないでしょうか。
select key as A_key, null as B_key, null as C_Key from A
union
select null as A_key, key as B_key, null as C_Key from B
union
select null as A_key, null as B_key, key as C_Key from C
前提条件をはっきりしていただけると、もう少しピンポイントで回答できるとおもいます。
No.1
- 回答日時:
構文的にはあっているようですが,
A、B、CをUNIONしたXとさらにA、B、Cとジョインする意味はないと思います。
単純にX内のAと外のAは別テーブルなのか、X内のA、B、Cを外で参照できると勘違いしているのか、X内のAと外のAに意味はないのかはっきりさせてください。
()内でUNIONした者はXという別名がついているのでX.keyと指定しないと参照出来ません。
この質問より前につまづいていた
問題があるのですが
下記の方の質問と似ていることから
このsql文を参照しました
その為再度aテーブルでジョイントする
理由は1レコード単位での
抽出としたいがためです大変参考に
なりました
ありがとうございます
大戦
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORCALE SQL 複数のGROUP BY
-
CASLⅡ 文字データから数値デー...
-
orace SQL文のエラー(ORA-0092...
-
Googleで、よく行くお店の口コ...
-
秋葉原でWindowsを買ったのです...
-
windows 10をアップデートした...
-
棒読みちゃんが起動できないの...
-
videopad 無料版 アンインストール
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるカラムのMAX値+1をINSERTし...
-
レコードが選択されないときの...
-
複数行を1行にするSQL
-
Oracle 9iで英字を含まないレコ...
-
distinct句を使わずレコード総...
-
副照会を簡単に使いまわせますか?
-
SQLPLUSにて演算子を使う方法と...
-
Oracle8iでSQL文の引数について
-
同一データの抽出の方法について
-
通番を振りたい
-
ストアドのselect文で別テーブ...
-
ループの仕方
-
教えて下さい。m(__)m
-
SQL:外部結合について
-
OracleSqlで『RORNUM...
-
複数条件に当てはまる行の抽出...
-
SELECT文でINを使わずに検索したい
-
テーブル結合について、下記SQL...
-
PL/SQLの基礎的な質問ですが・・
-
GROUP BYを行った後に結合した...
おすすめ情報