練習 1.4:新增合併、查詢條件以及 GROUP BY 子句
在開始之前,您必須先完成練習 1.3:指定結果直欄。
在這個練習中,您會執行下列步驟來限定查詢:
- 將查詢結果限制在目前租借影片的客戶,以及目前已被租借的影片。
- 當您執行查詢時,將查詢結果限制在您指定姓名的特定客戶。
- 依照租借的影片會在星期幾到期、每一天依照影片片名、每一影片片名再依照客戶姓名,來組織查詢結果。
合併表格
合併作業可讓您根據相符的直欄值,從兩個以上的表格擷取資料。表格中的資料會鏈結成單一結果。這個查詢需要有兩個合併。查詢結果需要包含 CUST_ID 直欄值相符的 RENTALS 和 CUSTOMERS 表格項目。查詢結果也必須包含影片 ID(VID_ID 直欄值)相符的 RENTALS 和 VIDEOS 表格項目。
- 在「表格」窗格中,用滑鼠右鍵按一下 R 表格的標頭,然後按一下蹦現功能表中的建立合併。
- 在「建立合併」視窗的來源之下,進行以下選擇:
- 在表格(別名)清單中,按一下 RENTALS (R)。
- 在直欄清單中,按一下CUST_ID。
- 在目標之下,進行以下選擇:
- 在表格(別名)清單中,按一下 CUSTOMERS (C)。
- 在直欄清單中,按一下CUST_ID。
- 按一下確定。這時兩個直欄之間會出現一條合併連接線。
- 在「表格」窗格中,將指標從 R (RENTALS) 表格中的 VID_ID 直欄,拖到 V (VIDEOS) 表格中的 VID_ID 直欄。
查看「SQL 程式碼」窗格,來觀察合併的程式碼:
WHERE
R.CUST_ID = C.CUST_ID
AND R.VID_ID = V.VID_ID
在「表格」窗格中已建立這兩個合併,如下所示:

您可以在「表格」窗格中用滑鼠右鍵按一下連接線、按一下蹦現功能表中的指定合併類型,然後在「指定合併」視窗中選取您要的合併類型,來變更合併類型(比方說,從預設的內部合併變更為左、右或完整外部合併)。
建立查詢條件
接下來,查詢需要有查詢條件,查詢才會只擷取客戶姓名符合您需求的結果列。您會利用「設計」窗格中的「條件」頁面,將條件加入查詢中。
- 按一下條件標籤來查看「條件」頁面。
- 按兩下直欄這個直欄,然後按一下清單中的 C.NAME。
- 按兩下運算子直欄,然後按一下 = 運算子。
- 按兩下值直欄,然後輸入 :custName。
變數名稱後面的冒號是代表變數的 SQL 語法,當您執行查詢時,它會換成一個值。當您執行 SQL 查詢時,您會看到這項作業如何運作。
這時「條件」頁面看起來如以下影像所示:

新增 GROUP BY 子句
您會依照星期幾、接著依照片名、再依照客戶姓名,來群組查詢。如果要在 SQL 建置器中建立 GROUP BY 子句,請使用「設計」窗格中的「群組」頁面。在這個視圖中,您也可以利用直欄表示式、巢狀群組、分組設定(只適用於 DB2 Universal Database),以及 ROLLUP 和 CUBE 分組函數(用於 Oracle 和 DB2 Universal Database),在查詢結果中建立更進階的分組。
- 在「設計」窗格中,按一下群組標籤。
- 新增 DAYOFWEEK 函數作為結果直欄。
- 在直欄表格中,按兩下第一列、按一下清單中的建置表示式,然後按 Enter 鍵。
- 在精靈的「表示式建置器」頁面中,按一下函數。
這時會開啟「函數表示式建置器」頁面。
- 在選取函數種類清單中,按一下日期和時間。
- 在選取函數清單中,按一下 DAYOFWEEK。
- 在選取函數簽章清單中,按一下 DAYOFWEEK(DATE) --> INTEGER。
這個函數簽章顯示該函數需要一個引數。
- 在引數表的值直欄中,按一下資料格、按一下清單中的 R.DATE,然後按 Enter 鍵。
- 按一下完成。DAYOFWEEK 函數會顯示在直欄表格的第一個資料格中。
- 在直欄表格的第二列中,從清單中選取 V.TITLE 直欄,接著在第三列中選取 C.NAME。
這時「群組」頁面看起來如以下影像:

這時查詢已完成。該查詢在 SQL 建置器中看起來如下:

現在您已準備好開始進行練習 1.5:執行 SQL 查詢。