![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A, B, C というテーブルがあります。
Aはkey1, key2, key3, key4, key5 を持ち、
Bはkey1, key2,
Cはkey3, key4, key5 を持っています。
A---
key1key2key3key4key5
001002001002003
B---
key1key2
001002
C---
key3key4key5
001002003
A, B, C を以下のように外部結合すれば値は取得できますが、
A.key1 = B.key1 (+)
A.key2 = B.key2 (+)
A.key3 = C.key3 (+)
A.key4 = C.key4 (+)
A.key5 = C.key5 (+)
B.key1B.key2C.key1C.key2C.key3
001002nullnullnull
nullnull001002003
ここに key1, key2 を持つDというテーブルを以下の様に
外部結合しても、値を持ってくることができません。
D---
key1key2
001002
A.key1 = B.key1 (+)
A.key2 = B.key2 (+)
A.key3 = C.key3 (+)
A.key4 = C.key4 (+)
A.key5 = C.key5 (+)
B.key1 = D.key1 (+)
B.key2 = D.key2 (+)
B.key1B.key2C.key1C.key2C.key3D.key1D.key2
001002nullnullnullnullnull
nullnull001002003nullnull
これってなんででしょうか?
よろしくお願いします.
No.1ベストアンサー
- 回答日時:
ややこしくなるので、以下では、Cに関する記述を省略して書きます。
(+)記号を使って外部結合しているので、オラクルですよね。
まず、確認したいのですが・・
A.key1 = B.key1 (+) and
A.key2 = B.key2 (+) and
A.key1 = D.key1 (+) and
A.key2 = D.key2 (+)
とせず
A.key1 = B.key1 (+) and
A.key2 = B.key2 (+) and
B.key1 = D.key1 (+) and
B.key2 = D.key2 (+)
と書く意味はあるんですか?
仮に、何らかの理由で、書く意味があったとして・・
オラクルの古い外部結合は・・
外部結合するテーブルは、whereの各要素すべてに、(+)を書かなければなりません。
(そうでないと旨くいくときとダメなときがある、そしてマニュアルにも”書け”とある)
なので、
A.key1 = B.key1 (+) and
A.key2 = B.key2 (+) and
B.key1(+) = D.key1 (+) and
B.key2(+) = D.key2 (+)
な感じで書くことを要求されるわけだけど、そんな条件は書けない。
よって、
select * from
d,
(
select a.key1 a_key1,a.key2 a_key2,b.key1 b_key1,b.key2 b_key2
from a,b
where a.key1=b.key1(+) and a.key2=b.key2(+)
) ab
where ab.b_key1=d.key1(+) and ab.b_key2=d.key2(+)
な段階的な書き方を書かざるおえません。
ちょっと説明のしかたがまずかったですね。
わかりにくい質問に回答していただいてありがとうございました。
そのやりかたでちょっと検討させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript Json のキーと値の出力の違いについて 2 2022/06/14 20:22
- CPU・メモリ・マザーボード USB Key 2 2022/07/06 14:25
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- マウス・キーボード PCで大文字と小文字が逆になりました。 3 2023/06/17 11:00
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- JavaScript java keyを配列で表記したい 10 2022/12/01 17:53
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- JavaScript SQLでデータベースから返ったデータのJSON形式生成について 1 2022/04/06 12:25
- その他(ソフトウェア) UnityのPublishing SettingsでCreate Keyを押しても反応しない 1 2023/06/27 01:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マッチング処理(1:N)
-
配列から順位を算出したい
-
PHPで連想配列のプルダウンメニ...
-
Excel VBAでフィルター後の対象...
-
PHPからCSVをアップロード後、m...
-
配列を回すとき、最後の要素だ...
-
配列の添え字が小数だとどうなる?
-
CSVデータの行数カウントをした...
-
別ファイルの構造体の値を読み...
-
配列の初期化
-
順位を付ける時のスコアの重複...
-
file_existsでファイル名の部分...
-
CSVファイルの最終行のデー...
-
foreachのなかで次のキーを参照...
-
チェックボックス複数選択 mys...
-
漢字のソートについて
-
配列の要素(value)に、変数を...
-
String だと「 ByRef引数の型が...
-
verilogで、配列の一部をタスク...
-
phpで、連想配列を普通の配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複確認
-
foreachで上限回数指定方法また...
-
マッチング処理(1:N)
-
Excel VBAでフィルター後の対象...
-
VB.NET で 二次元のハッシュは...
-
多次元配列を、1次元の配列にす...
-
SELECT 使用時の bindValue の...
-
Smartyでインクリメント
-
PHPでこのコード自体に意味は無...
-
PHP、{}記号の意味
-
配列を比較して同じものがあっ...
-
phpでforeachの中にforeachがあ...
-
多次元配列の中で条件に合う要...
-
sqlのデーターを『あ行』『か行...
-
ラジオボタンをランダムに表示...
-
キーが倍数の時の値の存在チェ...
-
三重県南部の温泉
-
foreachで配列を、左から縦3列...
-
ジャグ配列
-
構造体の中でユーザー定義型の...
おすすめ情報