17.10 - 検索条件における論理演算子の例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)

以下の例は、検索条件における論理演算子の使用法を示したものです。

次の例は、検索条件を使用して、高校を卒業していて少なくとも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