< Vorherige Lektion | Nächste Lektion >

Verknüpfungen, Abfragebedingung und GROUP BY-Klausel hinzufügen

In dieser Übung beschränken Sie die Abfrageergebnisse auf die Kunden, die derzeit Videos ausleihen und auf Videos, die derzeit ausgeliehen werden. Außerdem begrenzen Sie die Abfrageergebnisse auf einen bestimmten Kunden, dessen Namen Sie beim Ausführen der Abfrage angeben. Und schließlich organisieren Sie die Abfrageergebnisse nach dem Wochentag, an dem die Rückgabe der ausgeliehnen Videos fällig wird. Und für jeden Wochentag sortieren Sie die Videos nach ihrem Titel, für jeden Videotitel nach Kundennamen.

Tabellen verknüpfen

Mithilfe einer Verknüpfungsoperation können Sie Daten von mehreren Tabellen auf der Grundlage übereinstimmender Spaltenwerte abrufen. Die Daten in den Tabellen werden mit einem einzigen Ergebnis verknüpft. Für diese Abfrage sind zwei Verknüpfungen erforderlich. Im Abfrageergebnis müssen Einträge aus den Tabellen RENTALS und CUSTOMERS eingeschlossen sein, die über dieselben Spaltenwerte für CUST_ID verfügen. Im Abfrageergebnis müssen auch die Einträge aus den Tabellen RENTALS und VIDEOS enthalten sein, deren Video-IDs (Spaltenwerte für VID_ID) übereinstimmen.

Gehen Sie wie folgt vor, um Tabellen zu verknüpfen:

  1. Klicken Sie im Teilfenster Tabellen mit der rechten Maustaste auf die Kopfzeile der Tabelle R und klicken Sie anschließend im Popup-Menü auf Verknüpfung erstellen.
  2. Nehmen Sie im Fenster Verknüpfung erstellen unter Quelle die folgende Auswahl vor:
    1. Klicken Sie in der Liste Tabelle (Aliasname) auf RENTALS (R).
    2. Klicken Sie in der Liste Spalten auf CUST_ID.
  3. Nehmen Sie unter Ziel die folgende Auswahl vor:
    1. Klicken Sie in der Liste Tabelle (Aliasname) auf CUSTOMERS (C).
    2. Klicken Sie in der Liste Spalten auf CUST_ID.
  4. Klicken Sie auf OK. Zwischen den beiden Spalten wird eine Verknüpfungsverbindung angezeigt.
  5. Ziehen Sie im Teilfenster Tabellen den Mauszeiger von Spalte VID_ID in Tabelle R (RENTALS) zu Spalte VID_ID in Tabelle V (VIDEOS).
Im Teilfenster SQL-Quelle werden jetzt die Verknüpfungen im Quellcode angezeigt:
   FROM
      XMLTEST.VIDEOS AS V JOIN XMLTEST.RENTALS AS R JOIN XMLTEST.CUSTOMERS AS C
      ON R.CUST_ID = C.CUST_ID ON V.VID_ID = R.VID_ID

Im Teilfenster Tabellen werden beide Verknüpfungen wie im Folgenden dargestellt erstellt:

Tabellenverknüpfungen

Sie können den Verknüpfungstyp im Teilfenster Tabellen ändern (zum Beispiel von einem herkömmlichen Inner Join zu einem rechten, linken oder vollständigen Outer Join); klicken Sie hierzu mit der rechten Maustaste auf die Verbindung, klicken Sie im Popup-Menü auf Verknüpfungstyp angeben und wählen Sie anschließend den gewünschten Verknüpfungstyp im Fenster Verknüpfung angeben aus.

Abfragebedingung erstellen

Als Nächstes ist für die Abfrage eine Abfragebedingung erforderlich, damit von der Abfrage nur Ergebnisse mit dem gesuchten Kundennamen extrahiert werden. Die Bedingungen fügen Sie auf der Seite Bedingungen im Teilfenster Entwurf zur Abfrage hinzu.

Gehen Sie wie folgt vor, um eine Abfragebedingung zu erstellen:

  1. Klicken Sie auf die Registerkarte Bedingungen, um die Seite Bedingungen anzuzeigen.
  2. Klicken Sie in der ersten Zeile doppelt auf die Zelle in der Spalte Spalte und klicken Sie anschließend in der Liste auf C.NAME.
  3. Klicken Sie in derselben Zeile doppelt auf die Zelle in der Spalte Operator und klicken Sie anschließend auf den Operator =.
  4. Klicken Sie in dieser Zeile doppelt auf die Spalte Wert und geben Sie anschließend :custName ein. Ein Doppelpunkt gefolgt von einem Variablennamen ist die SQL-Syntax für eine Variable, die durch einen Wert ersetzt wird, wenn die Abfrage ausgeführt wird. Beim Ausführen der SQL-Abfrage wird die Funktionsweise dieser Syntax deutlich.
Die Seite Bedingungen wird jetzt wie in der folgenden Abbildung angezeigt:

Teilfenster 'Entwurf' - Seite 'Bedingungen'

GROUP BY-Klausel hinzufügen

Sie gruppieren die Abfrage nach dem Wochentag, nach dem Titel und nach dem Kundennamen.
Verwenden Sie zum Erstellen der GROUP BY-Klausel im SQL-Abfrageerstellungsprogramm die Seite Gruppen im Teilfenster Entwurf. In dieser Sicht können Sie auch komplexere Gruppierungen im Abfrageergebnis erstellen, wenn Sie Spaltenausdrücke, verschachtelte Gruppen, Gruppierungsmengen (nur in DB2) und die Gruppierungsfunktionen ROLLUP und CUBE (in Oracle und DB2) verwenden.

Gehen Sie wie folgt vor, um eine GROUP BY-Klausel zu erstellen:

  1. Klicken Sie im Teilfenster Entwurf auf die Registerkarte Gruppen.
  2. Fügen Sie die Funktion DAYOFWEEK als Ergebnisspalte hinzu.
    1. Klicken Sie in der Tabelle Spalte doppelt auf die erste Zeile, klicken Sie in der Liste auf Ausdruck erstellen und drücken Sie die Eingabetaste.
    2. Klicken Sie auf der Seite Ausdruckstypen des Assistenten auf Funktion und klicken Sie anschließend auf Weiter. Die Seite Erstellungsprogramm für Funktionsausdruck wird geöffnet.
    3. Wählen Sie in der Kategorieliste Funktion auswählen aus und klicken Sie auf Date and time.
    4. Klicken Sie in der Liste Funktion auswählen auf DAYOFWEEK.
    5. Klicken Sie in der Liste Signatur für Funktion auswählen auf DAYOFWEEK(DATE) --> INTEGER. Die Signatur für die Funktion gibt an, dass für die Funktion ein Argument erforderlich ist.
    6. Klicken Sie in der Spalte Wert der Argumenttabelle auf die Zelle, klicken Sie in der Liste auf R.DATE und drücken Sie anschließend die Eingabetaste.
    7. Klicken Sie auf Fertig stellen. Die Funktion DAYOFWEEK wird in der ersten Zelle der Tabelle Spalte angezeigt.
  3. Wählen Sie in der zweiten Zeile der Tabelle Spalte die Spalte V.TITLE in der Liste aus und wählen Sie anschließend in der dritten Zeile C.NAME aus. Die Seite Gruppen wird jetzt wie in der folgenden Abbildung angezeigt:

    Teilfenster 'Entwurf' - Seite 'Gruppen'

Die Abfrage ist jetzt fertiggestellt. Die Abfrage wird jetzt im SQL-Abfrageerstellungsprogramm wie folgt angezeigt:

Fertiggestellte Abfrage

< Vorherige Lektion | Nächste Lektion >

Feedback