GITTA-Logo
PDF Version of this document Search Help

Lesson Navigation IconAnfragesprache SQL

Unit Navigation IconSQL-Konzepte

Unit Navigation IconErstellen und Ändern von Tabellen

Unit Navigation IconDatenbankanfragen

LO Navigation IconSelect-From-Where

LO Navigation IconVerkettung von Bedingungen

LO Navigation IconVergleichs- und Mengenoperationen

LO Navigation IconArithmetische Operatoren

LO Navigation IconGeschachtelte Anfragen

LO Navigation IconVerbund

LO Navigation IconNicht relationale Konstrukte

LO Navigation IconMengenoperationen

LO Navigation IconZusammenfassung

LO Navigation IconÜbung „Datenbankanfragen“

Unit Navigation IconEinfügen, Löschen und Ändern

Unit Navigation IconLernkontrolle

Unit Navigation IconZusammenfassung

Unit Navigation IconLiteraturempfehlungen

Unit Navigation IconBibliographie

Unit Navigation IconMetadaten


GITTA/CartouCHe news:


Go to previous page Go to next page

Verbund

Oft kommt es vor, dass in einer Anfrage Daten aus mehreren Relationen benötigt werden. Hierfür müssen die Relationen miteinander verknüpft werden. Dazu werden die identischen Attribute (Fremdschlüssel) in den beiden Relationen miteinander verbunden.

Es gibt zwei Möglichkeiten Relationen in Anfragen miteinander zu verküpfen:

im WHERE Teil

Bei dieser Möglichkeit werden die identischen Attribute mit dem Vergleichsoperator verknüpft und als "Bedingung" (keine eingentliche Bedingung) im WHERE Teil der Anfrage eingefügt.

Verbundsoperatoren
remarkGrundsätzlich kann auch z.B. ein < für den Verbund verwendet werden. Dies ist geschieht jedoch meist in Kombination mit einer Verbundsbedingung mit =, weil ein solcher Verbund alleine keinen Sinn macht.

im FROM Teil

Eine andere Möglichkeit besteht darin, den Verbund im FROM Teil einer Anfrage vorzunehmen. Dies ist sinnvoller, da so die eigentlichen Suchkriterien (Bedingungen im WHERE-Teil) von den Tabellenverknüpfungen getrennt sind.

Dazu stehen folgende Befehle zur Verfügung:

  • <Relation> JOIN <Relation> USING (<Attribut>)
    die Relationen werden über ein in beiden Tabellen gleich benanntes Attribut verknüpft
  • <Relation> NATURAL JOIN <Relation>
    verknüpft automatisch alle Attribute die in beiden Relationen gleich benannt sind.
  • <Relation> JOIN <Relation> ON <Attribut> <Vergleichsoperator> <Attribut>
    bei dieser Variante kann angegeben werden, über welche Attribute beider Relationen verknüpft werden soll und welcher Operator verwendet werden soll (es können auch mehrere Verknüpfungen angegeben werden)

Das obige Beispiel würde mit diesen Befehlen folgendermassen aussehen:

SELECT Vorname, Nachname, Zeitung_Name

FROM Kunde JOIN Abonnement USING (KundNr);

oder

SELECT Vorname, Nachname, Zeitung_Name

FROM Kunde JOIN Abonnement ON Kunde.KundNr = Abonnement.KundNr;

oder

SELECT Vorname, Nachname, Zeitung_Name

FROM Kunde NATURAL JOIN Abonnement;

Die oben beschriebenen Befehle geben nur Datensätze aus, die in beiden Relationenen vorkommen. Sollen alle Datensätze der einen Relation mit den zugehörigen Datensätzen der zweiten Relation ausgegeben werden, kommen folgende Befehle zum Einsatz:

  • <Tabelle> RIGHT OUTER JOIN <Tabelle> USING (<Attribut>)
    alle Datensätze der rechten Relation und die zugehörigen Datensätze der linken Relation
  • <Tabelle> LEFT OUTER JOIN <Tabelle> USING (<Attribut>)
    alle Datensätze der linken Relation und die zugehörigen Datensätze der rechten Relation

Falls bei RIGHT OUTER JOIN in der linken Relation kein Datensatz verknüpft werden kann, wird für die Attribute dieser Relation NULL ausgegeben. Dies gilt ungekehrt auch für LEFT OUTER JOIN.

Top Go to previous page Go to next page