DBデータベーススペシャリスト試験 午前Ⅱ

平成28年度春期 データベーススペシャリスト 午前Ⅱ 問9

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

次のSQL文と同じ検索結果が得られるSQL文はどれか。 SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE COL1 IN(SELECT COL1 FROM TBL2)

選択肢

  1. ア
    SELECT DISTINCT TBL1.COL1 FROM TBL1 UNION SELECT TBL2.COL1 FROM TBL2
  2. イ
    SELECT DISTINCT TBL1.COL1 FROM TBL1 WHERE EXISTS (SELECT * FROM TBL2 WHERE TBL1.COL1 = TBL2.COL1)
  3. ウ
    SELECT DISTINCT TBL1.COL1 FROM TBL1,TBL2 WHERE TBL1.COL1 = TBL2.COL1 AND TBL1.COL2 = TBL2.COL2
  4. エ
    SELECT DISTINCT TBL1.COL1 FROM TBL1 LEFT OUTER JOIN TBL2 ON TBL1.COL1 = TBL2.COL1
解き方のヒントを見る

抽出条件と結果を照合する視点

SQLの抽出結果を考えるときは、条件がどの行や値に影響するかを段階的に整理し、処理の順序と結果の対応関係を落ち着いて確認することが重要です。まず対象を区切って観察しましょう。

この問題で問われていること

この問題では、条件の各部分が対象データのどの範囲に関係し、指定された条件を適用した後に、結果として残る情報をどのように整理して確認するかに焦点を当てます。

視点

条件全体を一度に判断せず、対象となるデータの範囲と、条件によって確認対象が変わる箇所を分けて整理します。各段階で何を見ているかを意識すると、結果との対応を比較しやすくなります。

確認ポイント

  • 条件が参照する対象の範囲を整理する
  • 条件を構成する部分ごとの役割を確認する
  • 適用前後で確認対象がどう変わるかを比較する
正解と解説を見る

正解

イ

解説

元のSQLは、TBL1のCOL1について、同じ値がTBL2のCOL1に存在する行だけを対象にし、重複を除いて返す。相関サブクエリで存在を判定するSQLが同じ検索結果になる。

理由

元のSQLはTBL1.COL1の値がTBL2.COL1の集合に含まれるかを調べている。EXISTSを使い、外側のTBL1.COL1と一致するTBL2の行の存在を確認すれば、同じ条件を表現できる。DISTINCTも両方にあるため、重複を除いた結果になる。

比較

UNIONは二つの検索結果をまとめるため対象を広げ、COL2まで比較する結合は条件を厳しくする。LEFT OUTER JOINは一致しないTBL1の行も残すため、元のIN条件と同じ対象にはならない。

選択肢ア

これは不正解だよ。UNIONはTBL1.COL1の値だけでなく、TBL2.COL1の値も結果に加える。TBL2にしか存在しない値がある場合、それまで返されるため、TBL1を基準に一致する値だけを返す元のSQLとは検索結果が異なる。

選択肢イ(正解)

これは正解だよ。EXISTSの内側で、外側のTBL1.COL1とTBL2.COL1が一致する行の存在を調べている。これはTBL1.COL1がTBL2.COL1の集合に含まれるかを判定する元のIN条件と対応し、DISTINCTによる重複排除も同じである。

選択肢ウ

これは不正解だよ。TBL1.COL1とTBL2.COL1が一致するだけでなく、TBL1.COL2とTBL2.COL2も一致する必要がある。元のSQLが比較するのはCOL1だけなので、COL1は一致していてもCOL2が異なる行が除外され、結果が狭くなる。

選択肢エ

これは不正解だよ。LEFT OUTER JOINはCOL1が一致するTBL2の行だけでなく、TBL2に一致する行がないTBL1の行も残す。元のIN条件はTBL2.COL1に存在する値だけを対象とするため、不一致行を含むこのSQLとは結果が異なる。

学習のポイント

INと相関EXISTSの対応、および結合形式による対象行の違いを学ぶ。

出典:独立行政法人 情報処理推進機構(IPA)平成28年度春期 データベーススペシャリスト試験 午前Ⅱ 問9(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針