平成28年度 秋期 午前 問29
データベース
副問合せに関する問題
“サッカーチーム”表と“審判”表から,条件を満たす対戦を導出する SQL 文の a に入れる字句はどれか。
〔条件〕
・出場チーム 1 のチーム名は出場チーム 2 のチーム名よりもアルファベット順で先にくる。
・審判は,所属チームの対戦を担当することはできない。
原典の表(上に文字で写した):
サッカーチーム
| チーム名 |
|---|
| X |
| Y |
| Z |
審判
| 氏名 | 所属チーム名 |
|---|---|
| 佐藤健太 | X |
| 鈴木翔太 | Y |
| 高橋拓也 | 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.所属チーム名)
答えと解説を見る
✓ これが正解イC.所属チーム名 NOT IN (A.チーム名, B.チーム名)
解説
審判の所属が二つの出場チームと違う条件です。
設問は、二つの条件を満たす対戦を導く SQL 文の空欄を埋めさせています。条件のうちアルファベット順の並びは、既に書かれているチーム名どうしの大小比較で満たされています。したがって空欄に入るのは残りの条件だけです。日本語に直すと、審判の所属チーム名が、出場する二つのチーム名のどちらとも一致しない、となります。これをそのまま表すのが、所属チーム名を二つのチーム名の並びに対して NOT IN で否定する書き方です。三通りの組合せに当てはめると、担当できる審判がそれぞれ一人ずつ残り、示された対戦の三行と過不足なく一致します。なお、副問合せを含む候補を読むときは、外側の審判 C の列を参照しているかを最初に見ます。参照していなければ審判ごとに結果が変わらないので、審判の絞り込みの役に立ちません。
ほかの選択肢はなぜ違うのか
- ア(A.チーム名 <> C.所属チーム名 …:二つの不一致を、または、で結んでいます。片方さえ違っていれば全体が成り立つため、自分の所属するチームが出場している対戦でも担当できてしまいます。正しくつなぐなら、かつ、です。
- ウEXISTS (SELECT * FRO…:内側の問合せが、外側でいま選んでいる審判と結び付いていません。条件に合う審判が誰か一人でも居るかを見るだけなので、どの行でも成り立ってしまい、絞り込みが効きません。
- エNOT EXISTS (SELECT *…:同じく外側と結び付いておらず、さらに否定が付いています。三つのチームにはそれぞれ審判が居るため条件はどの行でも成り立たず、結果として一行も導かれません。
この問題の用語
- OR数学の手法を使って、いくつかの案から最も有利なものを選ぶ考え方です。期待される費用や利益を計算して比べるときに使います。
出典:平成28年度 秋期 応用情報技術者試験 午前 問29
同じ用語が出る問題
- 令和7年度 秋期 午前 問22:論理積に関する問題(OR)
- 令和5年度 秋期 午前 問23:真理値表に示す3入力多数決回路(OR)
- 令和5年度 春期 午前 問1:論理積に関する問題(OR)
- 令和4年度 秋期 午前 問23:NANDに関する問題(OR)
- 令和3年度 秋期 午前 問22:桁上がりに関する問題(OR)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)