平成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