< 上一個課程 | 下一個課程 >

新增結合:查詢條件與 GROUP BY 子句

在此練習中,您會將查詢結果限定於目前租借影片的客戶與目前租出的影片。您也會將 查詢結果限定於您在執行查詢時指定名稱的特定客戶。最後,您會依據應歸還影片的日期 (星期幾) 來組織 查詢結果。在每個日期中 (星期幾),您會依序依據影片標題、客戶名稱來排序影片。

結合表格

結合作業可讓您根據相符的直欄值,從兩個或更多表格擷取資料。表格中的資料會鏈結至單一 結果。此查詢需要兩項結合。查詢結果必須包含具有相符 CUST_ID 直欄值的 RENTALS 與 CUSTOMERS 表格 項目。查詢結果也必須包含具有相符影片 ID (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 查詢建置器」中會如下所示:

已完成的查詢

< 上一個課程 | 下一個課程 >

讀者意見