平成19年 春期 ソフトウェア開発技術者 午前 問66

T1表とT2表が、次のように定義されているとき、次のSELECT文と同じ検索結果が得られるSELECT文はどれか。

[T1表の定義]
 CREATE TABLE T1 (SNO CHAR(6) PRIMARY KEY, SNAME CHAR(20))

[T2表の定義]
 CREATE TABLE T2 (CODE CHAR(4), SNO CHAR(6), SURYO INT)

[SELECT文]
 SELECT DISTINCT T1.SNAME
    FROM T1, T2
    WHERE T1.SNO=T2.SNO
    ORDER BY T1.SNAME

 ア  SELECT DISTINCT SNAME
    FROM T1
    WHERE SNO IN (SELECT SNO FROM T2)
    ORDER BY SNAME
 イ  SELECT DISTINCT SNAME
    FROM T1
    WHERE T1.SNO IN (SELECT SNO FROM T1)
    ORDER BY SNAME
 ウ  SELECT SNAME
    FROM T1
    WHERE SNO NOT IN (SELECT SNO FROM T2)
    ORDER BY SNAME
 エ  SELECT T2.SNAME
    FROM T1, T2
    WHERE T1.SNO=T2.SNO
    ORDER BY T2.SNAME


答え ア


解説
問題のSQL文について
 SELECT DISTINCT T1.SNAME
    FROM T1, T2
    WHERE T1.SNO=T2.SNO
    ORDER BY T1.SNAME

 ア  これの結果は問題文と同じになります。
「WHERE SNO IN (SELECT SNO FROM T2)」は、T2のSNOの中にもある、T1のSNOを取り出すという意味で、「WHERE T1.SNO=T2.SNO」と同じです。
 イ  「WHERE T1.SNO IN (SELECT SNO FROM T1)」は、T1のすべてのデータを出力することを意味します。
 ウ  「SELECT SNAME」は実行した結果、同じSNAMEが複数あった場合、重複したデータを出力します。
 エ  「SELECT SNAME」は実行した結果、同じSNAMEが複数あった場合、重複したデータを出力します。
また、「WHERE T1.SNO IN (SELECT SNO FROM T1)」は、T1のすべてのデータを出力することを意味します。


キーワード
・SELECT文

キーワードの解説

戻る 一覧へ 次へ