Freigeben über


Verknüpfungstypen

Beim Verknüpfen von Tabellen bestimmt der verwendete Jointyp darüber, welche Zeilen im Resultset aufgeführt werden. Sie können die folgenden Jointypen erstellen:

  • Innerer Join   Bei diesem Join werden nur die Zeilen angezeigt, die in beiden verknüpften Tabellen übereinstimmen. (Dies ist der Standardjointyp im Abfrage- und Ansicht-Designer.) Sie können z. B. die Tabellen titles und publishers verknüpfen, um ein Resultset mit dem Namen des Herausgebers für jeden Titel zu erstellen. In einem inneren Join werden Titel, für die keine Informationen zum Herausgeber vorliegen, sowie Herausgeber ohne gespeicherte Titel nicht in das Resultset aufgenommen. Für einen solchen Join kann folgende SQL-Anweisung formuliert werden:

    SELECT     title, pub_name
    FROM         titles INNER JOIN
    publishers ON titles.pub_id = publishers.pub_id
    

    Tipp

    Spalten mit dem Wert NULL liefern bei keinem Wert eine Übereinstimmung, wenn Sie einen inneren Join erstellen, und werden daher nicht in das Resultset aufgenommen. Nullwerte liefern keine Übereinstimmung mit anderen Nullwerten.

  • Äußerer Join   Bei diesem Join werden Zeilen auch dann in das Ergebnis aufgenommen, wenn keine zugehörigen Spalten in der verknüpften Tabelle vorhanden sind. Sie können unter drei Variationen eines äußeren Joins wählen, um festzulegen, welche Zeilen ohne Übereinstimmung im Ergebnis angezeigt werden sollen:

    • Linker äußerer Join   Alle Zeilen der zuerst angegebenen Tabelle (d. h. der "linken" Tabelle, die in der JOIN-Klausel ganz links steht) werden aufgenommen. Zeilen in der rechts stehenden Tabelle ohne Übereinstimmung werden nicht im Ergebnis angezeigt. Die folgende SQL-Anweisung ist ein Beispiel für einen linken äußeren Join der Tabellen titles und publishers, bei dem alle Titel aufgenommen werden, auch wenn keine Informationen zum Herausgeber eines Titels vorliegen:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles LEFT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • Rechter äußerer Join   Alle Zeilen der zweiten Tabelle (d. h. der "rechten" Tabelle, die in der JOIN-Klausel ganz rechts steht) werden aufgenommen. Zeilen in der links stehenden Tabelle ohne Übereinstimmung werden nicht im Ergebnis angezeigt. Beispielsweise werden bei einem rechten äußeren Join der Tabellen titles und publishers alle Herausgeber aufgenommen, auch wenn keine zugehörigen Titel in der Tabelle titles vorhanden sind. Hierfür kann folgende SQL-Anweisung formuliert werden:

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles RIGHT OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      
    • Vollständiger äußerer Join   Alle Zeilen aus allen verknüpften Tabellen werden aufgenommen, auch wenn keine Übereinstimmungen vorliegen. Beispielsweise werden bei einem vollständigen äußeren Join der Tabellen titles und publishers alle Titel und Herausgeber zurückgegeben, auch wenn keine Übereinstimmung in der jeweils anderen Tabelle vorhanden ist.

      SELECT titles.title_id, 
             titles.title, 
             publishers.pub_name
      FROM titles FULL OUTER JOIN publishers 
                  ON titles.pub_id 
                   = publishers.pub_id
      

      Tipp

      Einige Datenbanken, z. B. Oracle, unterstützen keine vollständigen äußeren Joins.

  • Cross Join   Bei diesem Join wird im Resultset für jede mögliche Zeilenkombination aus beiden Tabellen eine Zeile zurückgegeben. Ein Cross Join der Tabelle der Autoren mit der Tabelle der Herausgeber liefert z. B. ein Resultset mit einer Zeile für jede mögliche Kombination aus Autor und Herausgeber. Hierfür kann folgende SQL-Anweisung formuliert werden:

    SELECT *
    FROM authors CROSS JOIN publishers 
    

Siehe auch

Konzepte

Arbeiten mit Daten im Ergebnisbereich

Weitere Ressourcen

Angeben von Suchkriterien