練習 1.4:新增合併、查詢條件以及 GROUP BY 子句

在開始之前,您必須先完成練習 1.3:指定結果直欄

在這個練習中,您會執行下列步驟來限定查詢:

合併表格

合併作業可讓您根據相符的直欄值,從兩個以上的表格擷取資料。表格中的資料會鏈結成單一結果。這個查詢需要有兩個合併。查詢結果需要包含 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 程式碼」窗格,來觀察合併的程式碼:

   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 Universal Database),以及 ROLLUP 和 CUBE 分組函數(用於 Oracle 和 DB2 Universal Database),在查詢結果中建立更進階的分組。

  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.