2017年04月19日

平成28年度秋期 応用情報技術者試験問題 問29

問29
“サッカーチーム”表と“審判”表から、条件を満たす対戦を導出する
SQL文の a に入れる字句はどれか。
〔条件〕
 ・出場チーム1のチーム名は出場チーム2のチーム名よりも
 アルファベット順で先にくる。
 ・審判は、所属チームの対戦を担当することはできない。


  サッカーチーム    審判
 ┌────────┐ ┌────┬──────┐
 │  チーム名  │ │ 氏名 │所属チーム名│
 ┝━━━━━━━━┥ ┝━━━━┿━━━━━━┥
 │    X    │ │佐藤健太│   X   │
 ├────────┤ ├────┼──────┤
 │    Y    │ │鈴木翔太│   Y   │
 ├────────┤ ├────┼──────┤
 │    Z    │ │高橋拓也│   Z   │
 └────────┘ └────┴──────┘

  対戦
   出場チーム1 出場チーム2 審判氏名 
     X      Y   高橋拓也
     X      Z   鈴木翔太
     Y      Z   佐藤健太

〔SQL文〕
 SELECT A.チーム名 AS 出場チーム1, B.チーム名 AS 出場チーム2,
  C.氏名 AS 審判氏名
  FROM サッカーチーム AS A, サッカーチーム AS B, 審判 AS C
  WHERE A.チーム名 < B.チーム名 AND   a  

 ア (A.チーム名 <> C.所属チーム名 OR B.チーム名 <> C.所属チーム名)
 イ C.所属チーム名 NOT IN (A.チーム名, B.チーム名)
 ウ EXISTS
   (SELECT * FROM 審判 AS D WHERE A.チーム名 <> D.所属チーム名
    AND B.チーム名 <> D.所属チーム名)
 エ NOT EXISTS
   (SELECT * FROM 審判 AS D WHERE A.チーム名 = D.所属チーム名
    OR B.チーム名 = D.所属チーム名)




【正解】 イ

  a   には導出の条件が入る。

ア そもそものロジックがおかしく、 例えばチームX とチームYが対戦し、
 審判所属チームがXの場合、
 A.チーム名(X) <> C.所属チーム名(X) 偽
 B.チーム名(Y) <> C.所属チーム名(X) 真
 によって、条件に合致し、レコードとして選択されることになる。
イ 正しい。 A.チーム名, B.チーム名 に合致しないチームが選択される。
ウ A.チーム名がX、B.チーム名がYの時、
 
EXISTS
  (SELECT * FROM 審判 AS D WHERE A.チーム名 <> D.所属チーム名
   AND B.チーム名 <> D.所属チーム名)
によって、チームZが選択される。
 しかし、チームX < チームY AND チームZ となり、
 レコードとして選択さない。
エ A.チーム名がX、B.チーム名がYの時、
 
NOT EXISTS
  (SELECT * FROM 審判 AS D WHERE A.チーム名 = D.所属チーム名
  OR B.チーム名 = D.所属チーム名)
 によって、チームX、チームY 以外、
  すなわち、チームZが選択される。
 しかし、チームX < チームY AND チームZ となり、
 レコードとして選択さない。


EXCEL VBAのご相談なら ファーストマクロ 



タグ:SQL
posted by ファーストマクロ at 20:35| Comment(0) | H28秋応用情報技術者
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: