基本 SELECT プロトタイピングの使用例

以下では、例を使用して、基本 SELECT プロトタイピングを使用して SELECT ステートメントを作成し、それを実行して結果を参照する方法を示します。

表 DSN8810.EMP の中の、以下のようなすべての社員の詳細をリストするとします。
  • 部門が E01 でない、および
  • JOB が Manager である「SALARY」が少なくとも $40,000 である
それぞれの社員ごとに、表 DSN8810.EMP (相関名 #1) から以下の列を表示するとします。
  • LASTNAME
  • FIRSTNME
  • WORKDEPT
  • JOB
  • SALARY (昇順)
また、表 DSN8810.EEMP (相関名 #2) から以下の列を表示するとします。
  • BONUS

2 次「Basic SELECT Prototyping (基本 SELECT プロトタイピング)」パネルには、複数の列についての詳細を一度に指定することができます。しかし、明確にする目的から、以下のステップでは、個々の列ごとに一度に 1 つずつ詳細を入力し、ENTER キーが押された後に FM/Db2 が漸進的に作成する結果の SELECT ステートメント (パネルの上部に表示されます) を示しています。

ステップ 1

S」入力フィールドに「S」を入力することによって、列 LASTNAME を選択します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
s ___ _  #1 LASTNAME           VARCHAR(15)             _____________________ _
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (LASTNAME) を SELECT 文節に追加します。
SELECT #1.LASTNAME
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE ?
  ORDER BY ?

ステップ 2

S」入力フィールドに「S」を入力することによって、列 FIRSTNME を選択します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
s ___ _  #1 FIRSTNME           VARCHAR(12)             _____________________ _
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (FIRSTNME) を SELECT 文節に追加します。
SELECT #1.LASTNAME, #1.FIRSTNME
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE ?                             STNAME <> 'SMITH'
  ORDER BY ?

ステップ 3

WORKDEPT「E01」の社員を除外するには、以下のようにします。
  • S」入力フィールドに「S」を入力することによって、列 WORKDEPT を選択します。
  • 式演算子 <> を「Op」入力フィールドに入力して、
  • E01 を「Value (値)」入力フィールドに入力します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
s ___ _  #1 WORKDEPT           CHAR(3)              <> e01__________________ _
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (WORKDEPT) を SELECT 文節に追加します。
  • 述部 #1.WORKDEPT <> 'E01' を WHERE 文節に追加します。
SELECT #1.LASTNAME, #1.FIRSTNME, #1.WORKDEPT
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE #1.WORKDEPT <> 'E01'
  ORDER BY ?

ステップ 4

JOB が「MANAGER」の社員を選択するには、以下のようにします。
  • S」入力フィールドに「S」を入力することによって、列 JOB を選択します。
  • 左括弧 ( を「(」入力フィールドに入力して、
  • MANAGER を「Value (値)」入力フィールドに入力します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
s ___ (  #1 JOB                CHAR(8)                 manager______________ _
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (JOB) を SELECT 文節に追加します。
  • 述部 AND を WHERE 文節に追加する前に、デフォルトの論理演算 (#1.JOB = 'MANAGER' を挿入します。
SELECT #1.LASTNAME, #1.FIRSTNME, #1.WORKDEPT, #1.JOB
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE #1.WORKDEPT <> 'E01' AND (#1.JOB = 'MANAGER'
  ORDER BY ?

ステップ 5

また、SALARY が少なくとも $40,000 の社員を (その JOB とは無関係に) 選択し、結果が SALARY の昇順で表示されるように指定するには、以下のようにします。
  • S」入力フィールドに「A」を入力することによって、列 SALARY を昇順用に選択します。
  • 論理演算子「OR」を「LOp」入力フィールドに入力します。
  • 式演算子 >= を「Op」入力フィールドに入力して、
  • 40000」を「Value (値)」入力フィールドに入力します。
  • 右括弧を「)」入力フィールドに入力します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
a or_ _  #1 SALARY             DECIMAL(9,2)         >= 40000________________ )
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (SALARY) を SELECT 文節に追加します。
  • 述部 OR #1.SALARY >= 40000) を WHERE 文節に追加します。
  • 選択された列の名前 (SALARY) およびキーワード「ASC」を ORDER BY 文節に追加します。
SELECT #1.LASTNAME, #1.FIRSTNME, #1.WORKDEPT, #1.JOB, #1.SALARY
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE #1.WORKDEPT <> 'E01' AND (#1.JOB = 'MANAGER' OR #1.SALARY >= 40000)
  ORDER BY #1.SALARY ASC

ステップ 6

S」入力フィールドに「S」を入力することにって、列 BONUS (表 DSN8810.EEMP から) を選択します。
S LOp ( Tab Column Name        Data Type(length)    Op Value                 )
⋮
s ___ _  #2 BONUS              DECIMAL(9,2)            _____________________ _
⋮
FM/Db2 は生成済み SELECT ステートメントを次の方法で更新します。
  • 選択された列の名前 (BONUS) を SELECT 文節に追加します。
SELECT #1.LASTNAME, #1.FIRSTNME, #1.WORKDEPT, #1.JOB, #1.SALARY, #2.BONUS
  FROM DSN8810.EMP #1, DSN8810.EEMP #2
  WHERE #1.WORKDEPT <> 'E01' AND (#1.JOB = 'MANAGER' OR #1.SALARY >= 40000)
  ORDER BY #1.SALARY ASC

2 次「Basic SELECT Prototyping (基本 SELECT プロトタイピング)」パネルでまとめて入力された詳細 は、すべての列の詳細を同時に入力した場合に「Basic SELECT Prototyping (基本 SELECT プロトタイピング)」パネルがどのように表示されるかを 示しています。

注: (上記のステップのように) 一度に 1 つの列に詳細を入力する場合と、一度に複数の列の詳細を入力した場合では、影響が異なることがあります。

例えば、2 次「Basic SELECT Prototyping (基本 SELECT プロトタイピング)」パネルでまとめて入力された詳細 に示されているように詳細を入力した場合には、生成された SELECT ステートメントで LASTNAME の前に FIRSTNME が表示されます。

1. 2 次「Basic SELECT Prototyping (基本 SELECT プロトタイピング)」パネルでまとめて入力された詳細
  Process   Options   Utilities   Help
────────────────────────────────────────────────────────────────────────────────
 FM/Db2 (DFG2)              Basic SELECT Prototyping           Row 1 to 8 of 14

 SELECT ?
   FROM DSN8810.EMP #1, DSN8810.EEMP #2
   WHERE ?
   ORDER BY ?

 Row count  ALL            Number of rows to display

 Select columns (S/A/D) or enter predicates to build the SELECT statement:

 S LOp ( Tab Column Name      + Data Type(length)  + Op Value                 )
⋮
 s ___ _  #1 FIRSTNME           VARCHAR(12)             _____________________ _
⋮
 s ___ (  #1 JOB                CHAR(8)                 manager______________ _
 s ___ _  #1 LASTNAME           VARCHAR(15)             _____________________ _
⋮
 a or_ _  #1 SALARY             DECIMAL(9,2)         >= 40000________________ )
⋮
 s ___ _  #1 WORKDEPT           CHAR(3)              <> e01__________________ _
⋮
 s ___ _  #2 BONUS              DECIMAL(9,2)            _____________________ _
⋮

 Command ===> _____________________________________________________ Scroll PAGE
  F1=Help      F2=Split     F3=Exit      F4=Expand    F6=Execute   F7=Backward
  F8=Forward   F9=Swap     F10=Left     F11=Right    F12=Cancel

関連するタスク

関連した参照