< 上一课 | 下一课 >

添加连接、查询条件和 GROUP BY 子句

在本练习中,您将把查询结果限制为正在租借视频的客户和正在租借的视频。还将把查询结果限制为您运行查询时指定了其姓名的特定客户。最后,您将按照租借的视频星期几到期来组织查询结果。在当周的每天,您将按照视频标题对视频排序,而对各视频标题则按客户姓名排序。

连接表

连接运算使您可以根据匹配的列值从两个或多个表检索数据。表中的数据会链接到一个结果中。此查询需要两个连接。查询结果需要包含具有匹配的 CUST_ID 列值的 RENTALS 和 CUSTOMERS 表条目。查询结果还必须包含具有匹配的视频标识(VID_ID 列值)的 RENTALS 和 VIDEOS 表条目。

要连接表:

  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 源代码”窗格以在源代码中查看这些连接:
    FROM
       XMLTEST.CUSTOMERS AS C JOIN XMLTEST.RENTALS AS R ON C.CUST_ID = R.CUST_ID 
       JOIN XMLTEST.VIDEOS AS V ON 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 中)。

要添加 GROUP BY 子句:

  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 查询构建器中所示:

已完成的查询

< 上一课 | 下一课 >

反馈