平成28年度秋期 問29 / 80

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

“サッカーチーム”表と“審判”表から,条件を満たす対戦を導出するSQL文のaに入れる字句はどれか。

〔条件〕
・出場チーム1のチーム名は出場チーム2のチーム名よりもアルファベット順で先にくる。
・審判は,所属チームの対戦を担当することはできない。

問題の図

〔SQL文〕

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

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:イ

審判Cの所属チームが,出場チーム1(A)と出場チーム2(B)のどちらとも異なるという条件を指定する必要があります。つまり「C.所属チーム名 ≠ A.チーム名 かつ C.所属チーム名 ≠ B.チーム名」です。

  • ア: (A.チーム名 <> C.所属チーム名 OR B.チーム名 <> C.所属チーム名)
    誤り。ORで結んでいるため,審判の所属チームが一方の出場チームと同じでも,もう一方と異なれば真になります。例えばX対Yに佐藤健太(X所属)が割り当てられた行も出力されてしまいます。

  • イ: C.所属チーム名 NOT IN (A.チーム名, B.チーム名)
    正しい。審判の所属チーム名がAのチーム名にもBのチーム名にも一致しないことを表し,条件どおりの対戦(X対Y:高橋拓也,X対Z:鈴木翔太,Y対Z:佐藤健太)が導出されます。

  • ウ: EXISTS (… A.チーム名 <> D.所属チーム名 AND B.チーム名 <> D.所属チーム名)
    誤り。審判表全体に,どちらのチームにも所属しない審判が1人でも存在すれば真になります。審判Cとは関係なく判定されるため,X対Yに全ての審判が組み合わされてしまいます。

  • エ: NOT EXISTS (… A.チーム名 = D.所属チーム名 OR B.チーム名 = D.所属チーム名)
    誤り。どちらかのチームに所属する審判が審判表に存在すると偽になります。全てのチームに所属審判がいるため,どの対戦も出力されません。


答え

イ: C.所属チーム名 NOT IN (A.チーム名, B.チーム名)

出典:平成28年度 秋期 応用情報技術者試験 午前 問29

平成28年度秋期の他の問題