Home実験室 − No.0031


        No.0031(SQL)
        Where句についての追加実験(andとor)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 化学科と応用化学科で学部を越えた女子の集会を行うことになった。その名簿を作成するためのSQLを考える。


  2. 化学科(1293)または(or)応用化学科(2187)で女子(1)だから...。
     あれ? 男もヒットしてるぞ。どういうこと?
     この結果をよく見ると、応用化学科(2187)だけは女子だけを抽出できている。
     ということは、AND条件はORの前方にはかかっていないということだ。

SQL> SELECT 氏名,学科コード,性別 FROM TT01_学生 WHERE 学科コード = 1293 OR 学科コード = 2187 AND 性別 = 1 order by 学科コード; 氏名 学科コード 性別 ---------------------------------------- ---------- ---------- 岩谷 彦太郎 1293 2 下川 里沙 1293 1 芳賀 一司 1293 2 米沢 安男 1293 2 会田 翔子 2187 1 秋元 優衣 2187 1 中村 音々 2187 1 妹尾 千佳 2187 1 287行が選択されました。 SQL>



  3. できた。でも、こんなことしないといけないの? 面倒くさいなぁ。

SQL> SELECT 氏名,学科コード,性別 FROM TT01_学生 WHERE 学科コード = 1293 AND 性別 = 1 OR 学科コード = 2187 AND 性別 = 1 order by 学科コード; 氏名 学科コード 性別 ---------------------------------------- ---------- ---------- 下川 里沙 1293 1 長浜 舞花 1293 1 本村 千晶 1293 1 湯川 有紀 1293 1 会田 翔子 2187 1 秋元 優衣 2187 1 中村 音々 2187 1 妹尾 千佳 2187 1 135行が選択されました。 SQL>



  4. なるほどね。下のように括弧でくくれば、性別の条件を1度書くだけで済む。

SQL> SELECT 氏名,学科コード,性別 FROM TT01_学生 WHERE (学科コード = 1293 OR 学科コード = 2187) AND 性別 = 1 order by 学科コード; 氏名 学科コード 性別 ---------------------------------------- ---------- ---------- 下川 里沙 1293 1 長浜 舞花 1293 1 本村 千晶 1293 1 湯川 有紀 1293 1 会田 翔子 2187 1 秋元 優衣 2187 1 中村 音々 2187 1 妹尾 千佳 2187 1 135行が選択されました。 SQL>



    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0031

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system