戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2016年 秋期 午前229


問題文

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

選択肢

(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.所属チーム名)

サッカーチームと審判の対戦条件を満たすSQL文【午前2 解説】

正解の理由

選択肢イの C.所属チーム名 NOT IN (A.チーム名、B.チーム名) は、審判の所属チームが出場チーム1または出場チーム2のいずれにも該当しないことを正確に表現しています。
これにより「審判は自分の所属チームの対戦を担当できない」という条件をシンプルかつ明確に実装できるため、正解です。

解法ステップ

  1. 出場チーム1と出場チーム2のチーム名をアルファベット順で比較し、A.チーム名 < B.チーム名 とする。
  2. 審判の所属チーム名が出場チーム1および2のどちらにも含まれない条件を考える。
  3. 複数の値に対して所属チーム名が含まれないことを表す NOT IN 句を使う。
  4. SQL文のWHERE句に AND C.所属チーム名 NOT IN (A.チーム名、B.チーム名) を追加する。
  5. これにより、審判が自分の所属チームの試合を担当しない条件が満たされる。

選択肢別の誤答解説

  • ア: (A.チーム名 <> C.所属チーム名 OR B.チーム名 <> C.所属チーム名)
    → OR条件はどちらか一方が異なればよいので、審判が所属チームの試合を担当する可能性を排除できない。
  • イ: 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.所属チーム名)
    → 審判テーブルに該当する行が存在しないことを判定し、元の審判テーブルの行単位の条件としては不適切。

よくある誤解

  • OR条件で所属チーム名が異なることを表現すると、どちらか一方だけ異なればよいと誤解しがちです。
  • EXISTSやNOT EXISTSを使うと複雑になり、条件の意味を取り違えることがあります。

補足コラム

SQLのNOT IN句は複数の値に対して否定条件を簡潔に書けるため、複雑な論理演算子やサブクエリを使わずに済みます。
また、EXISTSNOT EXISTSはサブクエリの存在有無を判定するためのもので、今回のように単純な比較条件には過剰な表現となります。
SQLの集合演算や論理演算の理解は、効率的で誤りの少ないクエリ作成に不可欠です。

FAQ

Q: NOT IN<> の違いは何ですか?
A: <> は単一の値との比較で、複数値の否定条件には NOT IN を使うのが適切です。
Q: なぜ OR 条件は誤りになるのですか?
A: OR はどちらか一方が真なら全体が真になるため、審判が所属チームの試合を担当する可能性を排除できません。
Q: EXISTSNOT EXISTS はどんな時に使うべきですか?
A: サブクエリの結果の存在有無を判定したい場合に使い、単純な値比較には不向きです。

関連キーワード: SQL, NOT IN, EXISTS, 論理演算子、サブクエリ、チーム対戦条件、審判担当制限
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について