![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
結合について質問です。
■テーブル
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で質問しましょう!
似たような質問が見つかりました
- 中学校 英語での答え方はこれで正解ですか? (このように実際に聞くかとかは別として、あくまでも文法として) 2 2022/11/19 17:52
- 英語 1単語及び2単語の「no~」を受ける単語について 1 2022/11/07 11:54
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Oracle SQL update方法 2 2022/06/22 14:07
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- その他(自然科学) 安全データシート(SDS)の見方について 2 2022/08/29 02:39
- HTML・CSS <input>のstep属性に違反する入力をした時にエラーメッセージを表示させない事は可能か 2 2023/02/16 04:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SET句内で複数の条件を指定して...
-
SELECTの結果で同一行を複数回...
-
select句副問い合わせ 値の個...
-
写真のsql文空白をハイフン表示...
-
SQL GROUPで件数の一番多いレコ...
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
select insertで複数テーブルか...
-
他のテーブルを参照した値はupd...
-
oracleの分割delete
-
updateの一括実行
-
SQLの書き方(チェックボックス)
-
データセットのレコード更新が...
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
GROUP BYを使ったSELECT文の総...
-
Accessで別テーブルの値をフォ...
-
実績累計の求め方と意味を教え...
-
ファイル書込みで一行もしくは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
MERGE文を単体テーブルに対して...
-
unionの結果は集計はできないで...
-
oracleの分割delete
-
SET句内で複数の条件を指定して...
-
複数テーブルのMAX値の行データ...
-
SQL GROUPで件数の一番多いレコ...
-
他のテーブルを参照した値はupd...
-
外部結合とor条件混在の記述方法
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
集計後の数値が倍になる
-
SQLの書き方(チェックボックス)
-
副問い合わせのinsert文
-
OracleのSQLについて質問があり...
-
updateの一括実行
おすすめ情報