练习 1.4:添加连接、查询条件和 GROUP BY 子句

在开始之前,必须完成练习 1.3:指定结果列

在本练习中,通过执行下列步骤限定查询:

连接表

连接操作允许您根据匹配的列值检索两个或多个表中的数据。各个表中的数据链接至单个结果。此查询需要两个连接。查询结果需要包括具有匹配的 CUST_ID 列值的 RENTALS 表项和 CUSTOMERS 表项。查询结果还必须包括具有匹配的录像带标识 (VID_ID 列值)的 RENTALS 表项和 VIDEOScolumn 表项。

  1. 在“表”窗格中,右键单击 R 表的标题,然后在弹出菜单上单击创建连接
  2. 在“创建连接”窗口中,在下面,作出下列选择:
    1. 表(别名)列表中,单击 RENTALS (R)
    2. 列表中,单击 CUST_ID
  3. 目标下面,作出下列选择:
    1. 表(别名)列表中,单击 CUSTOMERS (C)
    2. 列表中,单击 CUST_ID
  4. 单击确定。这两个列之间就出现一个连接符。
  5. 在“表”窗格中,将指针从 R (RENTALS) 表中的 VID_ID 列拖到 V (VIDEOS) 表中的 VID_ID 列。

查看“SQL 源代码”窗格,以观察源代码中的连接:

   WHERE
         R.CUST_ID = C.CUST_ID
         AND R.VID_ID = V.VID_ID

在“表”窗格中,已经创建了这两个连接,如下所示:

表连接

通过右键单击连接符并在弹出菜单上单击指定连接类型,然后在“指定连接”窗口中选择想要的连接类型,可以在“表”窗格中更改连接类型(例如,从缺省内连接更改为左外连接、右外连接或全部外连接)。

创建查询条件

接下来,查询需要查询条件,以便仅抽取具有您想要的客户姓名的结果行。通过使用“设计”窗格中的“条件”页,对查询添加条件。

  1. 单击条件选项卡以查看“条件”页。
  2. 双击列,然后单击列表中的 C.NAME
  3. 双击运算符列,然后单击 = 运算符。
  4. 双击列,然后输入 :custName。冒号后面跟着一个变量名是 SQL 的语法,运行查询时,该变量将被一个值替换。运行 SQL 查询时,可以看到这是如何进行的。

“条件”页现在看起来类似于下图:

“设计”窗格 - “条件”页

添加 GROUP BY 子句

将分别按星期几、名称和客户姓名对查询进行分组。要在“SQL 构建器”中创建 GROUP BY 子句,使用“设计”窗格中的“组”页。在此视图中,还可以通过使用列表达式、嵌套组、分组集(仅在 DB2 通用数据库中)以及 ROLLUP 和 CUBE 分组函数(在 Oracle 和 DB2 通用数据库中),在查询结果中创建更多高级分组。

  1. 在“设计”窗格中,单击选项卡。
  2. 添加 DAYOFWEEK 函数作为结果列。
    1. 表中,双击第一行,单击列表中的构建表达式,然后按 Enter 键。
    2. 在向导的“表达式构建器”页中,单击函数。“函数表达式构建器”页打开。
    3. 选择函数类别列表中,单击日期和时间
    4. 选择函数列表中,单击 DAYOFWEEK
    5. 选择函数特征符列表中,单击 DAYOFWEEK(DATE) --> INTEGER
      该函数特征符表示函数需要一个自变量。
    6. 在自变量表的列中,单击单元格,单击列表中 R.DATE,然后按 Enter 键。
    7. 单击完成。 DAYOFWEEK 函数就显示在表的第一个单元格中。
  3. 表的第二行中,从列表中选择 V.TITLE 列,然后在第三行中选择 C.NAME。“组”页现在看起来类似于下图:

    “设计”窗格 - “组”页

现在,查询就完成了。查询在“SQL 构建器”中类似于下图:

已完成的查询

现在,您可以开始进行练习 1.5:运行 SQL 查询了。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.