以下の例は、検索条件における論理演算子の使用法を示したものです。
次の例は、検索条件を使用して、高校を卒業していて少なくとも12年の学歴があるか、2年を超える職務経験がある者の名前をProfileというユーザー テーブルから選択します。
SELECT Name FROM Profile WHERE YrsExp > 2 OR (EdLev >= 12 AND Grad = 'Y') ;
次の文は、管理者番号が10007または10012のすべての社員のリストを要求します。管理者情報はDepartment (部門)テーブルに含まれ、従業員情報はEmployeeテーブルに含まれています。このリクエストは、2つのテーブルの共通の列であるDeptNoでテーブルを結合させることによって処理します。
参照における曖昧さを避けるために、DeptNoを完全に修飾しなければなりません。さらに、ORのあるIN条件をまとめるために、追加の括弧が必要なことにも注意する必要があります。それがないと、結果は直積(デカルト積)となります。
SELECT EmpNo,Name,JobTitle,Employee.DeptNo,Loc FROM Employee,Department WHERE (Employee.DeptNo=Department.DeptNo) AND ((Employee.DeptNo IN (SELECT Department.DeptNo FROM Department WHERE MgrNo=10007)) OR (Employee.DeptNo IN (SELECT Department.DeptNo FROM Department WHERE MgrNo=10012))) ;
Departmentテーブルが次の行を含んでいると想定します。
DeptNo | Department | Loc | MgrNo |
---|---|---|---|
100 | Administration | NYC | 10005 |
600 | Manufacturing | CHI | 10007 |
500 | Engineering | ATL | 10012 |
300 | Exec Office | NYC | 10018 |
700 | Marketing | NYC | 10021 |
結合文は、次の結果を返します。
EmpNo | Name | JobTitle | DeptNo | Loc |
---|---|---|---|---|
10012 | Watson L | Vice Pres | 500 | ATL |
10004 | Smith T | Engineer | 500 | ATL |
10014 | Inglis C | Tech Writer | 500 | ATL |
10009 | Marston A | Secretary | 500 | ATL |
10006 | Kemper R | Assembler | 600 | CHI |
10015 | Omura H | Programmer | 500 | ATL |
10007 | Aguilar J | Manager | 600 | CHI |
10010 | Reed C | Technician | 500 | ATL |
10013 | Regan R | Purchaser | 600 | CHI |
10016 | Carter J | Engineer | 500 | ATL |
10019 | Newman P | Test Tech | 600 | CHI |