戦国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 解説】

要点まとめ

  • 結論:審判の所属チームが出場チーム1・2のどちらにも含まれない条件は
    NOT IN
    句で簡潔に表現できる。
  • 根拠:
    NOT IN
    は指定した複数の値のいずれにも該当しないことを判定し、複数条件のAND結合よりも明確で誤解が少ない。
  • 差がつくポイント:複雑なサブクエリや論理演算子の誤用を避け、SQLの集合演算の理解と適切な句の選択が重要。

正解の理由

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

よくある誤解

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

解法ステップ

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

    → 審判テーブルに該当する行が存在しないことを判定し、元の審判テーブルの行単位の条件としては不適切。

補足コラム

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

FAQ

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

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

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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