SQLの実行順序に関して

ささきさきさん  
(No.1)
平成30年春期試験 午後試験 問6 データベース設問3に関しての質問です。

SQL文の穴埋めをする問題についてですが、SQLの実行順序がよくわかりません

ネットや生成AIで調べてみると

①h→i→g→jなのかなとも思いつつ

解説には
②h→i→j→gと記載があります

一番最初のSELECT,
FROM後の(SELECT~

と2つありますが、この四角内のJの内容はどちらの命令にかかっているのでしょうか

またどのような見方をすれば、その判断ができるでしょうか
2026.01.01 19:28
応用太郎2さん 
(No.2)
> ①h→i→g→jなのかなとも思いつつ
合ってます。
順番的にはORDER BYが後です。

> この四角内のJの内容はどちらの命令にかかっているのでしょうか
一番最初のSELECTです。

> またどのような見方をすれば、その判断ができるでしょうか
一番分かりやすい基準としては、インデントの深さ(一文字目の縦のライン)です。
例えば以下の例では一文字目の'S'と'O'が同じ縦のラインなのでペアだと判断できます。
SELECT...
... (省略)
ORDER BY...
以下の例では縦のラインに一致しないので別のSELECTとのペアである可能性が高いです。
... (省略)
    SELECT...
... (省略)
ORDER BY...
[検収機能の作成]の図2ではjの虫食い箇所が最初のSELECTと同じ縦のラインから始まっているので判断が可能です。
参考になりましたら幸いです。
2026.01.01 20:48
GinSanaさん 
AP プラチナマイスター
(No.3)
①h→i→g→jが正解で、オーダーバイがセレクトより後にならないといけないのは、セレクトでつけたエイリアス(as○○)をオーダーバイでは利用できるから、後になる、という理屈になります。

>どのような見方をすれば、その判断ができるでしょうか
まず、内部表(フロムのテーブル)がどこからどこまでなのか?からきて、丸括弧でORDまでか、とわかって、駆動表(ジョインのテーブル)が次はどこからどこまでなのか?が、テーブル自体はDLIまでか、結合条件はONからか、となるわけですが、
空欄jの場合インデントの見た目を無視すればありえる理屈は結合条件の続きかウェアー条件、グループバイ条件、ハビング条件、オーダーバイ条件と絞られるわけですが、あとは解説の通り本文からソート要否の記述を読み取るのが手っ取り早いです。頭の本来のセレクトから他の条件を消していってもよいのですが。
2026.01.01 22:27
ささきさきさん  
(No.4)
解答拝見いたしました。
応用太郎2さん、GinSanaありがとうございます。

お二方のおかげでかなり視界が開けてきました。

まだ、SQL文の処理順序や今回でいうとどことどこがLEFT OUTER JOINされているのかすぐに判断できず一通り解ききるのに45分以上かかってしまっています。


継続して、試験勉強に励もうと思います
ありがとうございました。
2026.01.02 12:44

返信投稿用フォーム

※SQL文は全角文字で記載してください。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop