
結合について質問です。
■テーブル
TOIAWASE A
KOKYAKU B
TOIAWASE_TAISHOU C
MOUSIKOMI_INFOMATION D
MOUSIKOMI_INFOMATION E
KINMU_MASTER F
■結合
A.KOKYAKU_NO = B.KOKYAKU_NO AND ※1:1
A.TOIAWASE_NO = C.TOIAWASE_NO(+) ※1:1
C.MOUSIKOMI_TYPE = D.MOUSIKOMI_TYPE(+) ※1:1
D.OLD_MOUSIKOMI_TYPE = E.MOUSIKOMI_TYPE(+) ※1:1
A.KINMU_CD = F.KINMU_CD(+) ※1:1
■データ整合性について
Aがある場合、Bは必ずあります。
Aがある場合、Cはあるとは限りません。
Cがある場合、Dは必ずあります。
Dがある場合、Eがあるとは限りません。
Aがある場合、Fがあるとは限りません。
Aをもとに問い合わせ一覧を取得したいです。
Aがある場合、Cがあるとは限らないため、それに紐づくテーブルは全て外部結合をするしかありません。
一応、上記SQLでも取得はできるのですが、他に良い(効率の良い)SQLはないのでしょうか?
宜しくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1さんの言うANSI方式でSQLを書いた方が分かりやすいかも・・・
SELECT AB.*, CD.*, E.*, F.*
FROM (
SELECT A.*, B.*
FROM TOIAWASE A
INNER JOIN KOKYAKU B
ON(A.KOKYAKU_NO = B.KOKYAKU_NO)
) AB
LEFT JOIN (
SELECT C.*, D.*
FROM TOIAWASE_TAISHOU C
INNER JOIN MOUSIKOMI_INFOMATION D
ON(C.MOUSIKOMI_TYPE = D.MOUSIKOMI_TYPE)
) CD
ON(AB.TOIAWASE_NO = CD.TOIAWASE_NO)
LEFT JOIN MOUSIKOMI_INFOMATION E
ON(CD.OLD_MOUSIKOMI_TYPE = E.MOUSIKOMI_TYPE)
LEFT JOIN KINMU_MASTER F
ON(AB.KINMU_CD = F.KINMU_CD)
WHERE 「その他選択条件」
こんな感じかなぁ・・・
No.1
- 回答日時:
こんにちは。
いいかどうかはわからないのですが・・・、普通にANSIで書いた方が分かり易くないですか?
AとBを等結合(INNER JOIN)したテーブルをA'
CとDを等結合(INNER JOIN)したテーブルをC'
C'とEを外部結合(OUTER JOIN)したテーブルをC''
と置くと、
A'とC''とFを外部結合にすればいいだけになります。
(+)で書くと、複数ある場合にわかりにくくなります・・・。
Oracle固有ですし・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
棒読みちゃんが起動できないの...
-
子供向けプログラミングのスク...
-
osqleditについて
-
オラクル12C_SQLPlusで実行す...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
-
オラクルゴールドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
外部結合とor条件混在の記述方法
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
SELECTの結果で同一行を複数回...
-
oracleの分割delete
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
SET句内で複数の条件を指定して...
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
Access 2つのテーブルで数量...
-
他のテーブルを参照した値はupd...
-
SQLの書き方(チェックボックス)
-
SQLで複数の条件がある場合
-
複数テーブルのMAX値の行データ...
-
半角英数字混在データから数字...
-
結合と副問い合わせの違い
おすすめ情報