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

“科目”表と“実習”表に対して、次のSQL文を実行した結果、導出される表はどれか。

 SELECT 科目.科目番号
     FROM 科目, 実習
     WHERE 科目.科目番号=実習.科目番号
 UNION
 SELECT 科目.科目番号
     FROM 科目
     WHERE 単位数 >= 5

科目 実習
科目番号 科目名 単位数
1 国文学 5
2 物理学 6
3 数学 6
4 英文学 4
5 化学 3
6 世界史 3
実習番号 実習名 科目番号
A1 重力実験 2
A2 発行反応 5

科目番号
1
2
2
3
5
科目番号
1
2
3
5
科目番号
2
科目番号
5


答え イ


解説
問題文のSQL
『SELECT 科目.科目番号
     FROM 科目, 実習
     WHERE 科目.科目番号=実習.科目番号
 UNION
 SELECT 科目.科目番号
     FROM 科目
     WHERE 単位数 >= 5』

『SELECT 科目.科目番号
     FROM 科目, 実習
     WHERE 科目.科目番号=実習.科目番号』

『SELECT 科目.科目番号
     FROM 科目
     WHERE 単位数 >= 5』
の和(UNION)である。

まず、前半のSQL
『SELECT 科目.科目番号
     FROM 科目, 実習
     WHERE 科目.科目番号=実習.科目番号』
を解くと、実習テーブルの実習番号A1の科目番号2と実習番号A2の科目番号5が両方とも、科目テーブルにあるので

科目番号
2
5
になる。

次に、後半のSQL
『SELECT 科目.科目番号
     FROM 科目
     WHERE 単位数 >= 5』
を解くと、科目テーブルで単位数が5以上の科目は、国文学と物理学と数学であるので、
科目番号
1
2
3
になる。

この2つの和(UNION)を求めると
科目番号
1
2
3
5
(イ)になる。


キーワード
・UNION

キーワードの解説
  • UNION(和)
    関係データにおける和とは、データの項目が一致している同士で行う演算処理で、2つのデータの和集合になる。
    データ:R
    A B C
    1 2 3
    4 5 6
    データ:S
    A B C
    7 8 9
    4 5 6
    R UNION S
    A B C
    7 8 9
    4 5 6
    1 2 3
    になる。

もっと、「UNION」について調べてみよう。

戻る 一覧へ 次へ