Buchgenerator (deaktivieren)

Einführung in SQL: Mehrere Tabellen

Aus Wikibooks

Wechseln zu: Navigation, Suche


Ein besonderes Merkmal von relationalen Datenbanken und damit von SQL ist, dass die Informationen fast immer über mehrere Tabellen verteilt sind und bei Abfragen in der Ergebnismenge zusammengeführt werden müssen. Dieses Kapitel gibt einen Überblick über die Möglichkeiten dazu.

Inhaltsverzeichnis

[Bearbeiten] Schreibweisen bei mehreren Tabellen

Bitte beachten Sie bei allen Befehlen, die mehrere Tabellen verwenden (das sind zwangsläufig nur SELECT-Befehle):

  • Wenn ein Spaltenname in Bezug auf den gesamten SQL-Befehl eindeutig ist, genügt dieser Name.
  • Wenn ein Spaltenname mehrfach vorkommt (wie ID), dann muss der Tabellenname vorangesetzt werden; der Spaltenname wird nach einem Punkt angefügt.

Crystal Clear app terminal.png SQL-Quelltext:

SELECT
  Personalnummer AS MitNr, 
  Name, Vorname, 
  Dienstwagen.ID, Kennzeichen, Fahrzeugtyp_ID AS Typ
FROM Mitarbeiter, Dienstwagen;
  • Wegen der Übersichtlichkeit wird der Tabellenname in der Regel auch dann bei jeder Spalte angegeben, wenn es wegen der ersten Regel nicht erforderlich wäre.

Crystal Clear app terminal.png SQL-Quelltext:

SELECT 
  Mitarbeiter.Personalnummer AS MitNr, 
  Mitarbeiter.Name, Mitarbeiter.Vorname, 
  Dienstwagen.ID AS DIW, Dienstwagen.Kennzeichen, Dienstwagen.Fahrzeugtyp_ID AS Typ
FROM Mitarbeiter, Dienstwagen;
  • Anstelle des Namens einer Tabelle kann überall auch ein Tabellen-Alias benutzt werden; dieser muss einmal hinter ihrem Namen (in der FROM- oder in der JOIN-Klausel) angegeben werden.

Crystal Clear app terminal.png SQL-Quelltext:

SELECT 
  mi.Personalnummer AS MitNr, 
  mi.Name, mi.Vorname, 
  dw.ID AS DIW, dw.Kennzeichen, dw.Fahrzeugtyp_ID AS Typ
FROM Mitarbeiter mi, Dienstwagen dw;

Alle diese Befehle, mit denen man "Alle Kombinationen" von Mitarbeitern und Dienstwagen erhält, sind gleichwertig. Zu empfehlen ist die vollständige Schreibweise mit Alias wie im letzten Beispiel.

Der Alias kann auch aus einem einzelnen Buchstaben bestehen und ist nur für den betreffenden SQL-Befehl gültig. Ein und dieselbe Tabelle kann mal als "a", dann als "mi" oder auch als "xyz" bezeichnet werden. Wegen des leichteren Verständnisses sind aussagefähige Kürzel sinnvoll; auch deshalb sind sie unter Tabellenstruktur der Beispieldatenbank angegeben.


[Bearbeiten] Verknüpfung über WHERE – der traditionelle Weg

Beim einfachsten Verfahren, mehrere Tabellen gleichzeitig abzufragen, werden in der FROM-Klausel alle Tabellen aufgeführt; die WHERE-Klausel enthält neben den Auswahlbedingungen auch Verknüpfungsbedingungen, wie die Tabellen zueinander gehören.

Einzelheiten werden in Einfache Tabellenverknüpfung behandelt.

[Bearbeiten] JOINs - der moderne Weg

Beim "modernen" Weg, mehrere Tabellen gleichzeitig abzufragen, wird jede verknüpfte Tabelle in einer JOIN-Klausel aufgeführt; der ON-Parameter enthält die Verknüpfungsbedingung. Die WHERE-Klausel enthält nur die Auswahlbedingungen.

Die Einführung dazu wird in Arbeiten mit JOIN besprochen.

[Bearbeiten] OUTER JOIN - auch null-Werte zurückgeben

Bei Abfragen mit einem "einfachen" JOIN wie im Kapitel Arbeiten mit JOIN werden nicht alle Datensätze aufgeführt. Zeilen, bei denen es in der einen oder anderen Tabelle keine Verknüpfung gibt, fehlen im Ergebnis.

Mit einem OUTER JOIN können auch solche "fehlenden" Zeilen aufgeführt werden.

Einzelheiten dazu werden in OUTER JOIN behandelt.

[Bearbeiten] Weitere Möglichkeiten von JOIN

Als SELF JOIN wird eine Tabelle mit sich selbst verknüpft.

Oft kommt es vor, dass man die Daten aus einer Tabelle erst bearbeiten möchte, bevor man sie mit einer anderen Tabelle verknüpft. Dazu gibt es die Möglichkeit einer "Inline-View".

Diese Ergänzungen werden in Mehr zu JOIN besprochen.


[Bearbeiten] Zusammenfassung

In diesem Kapitel erhielten wir Hinweise darauf, wie mehrere Tabellen veknüpft werden können:

  • einfach über die FROM-Klausel und passende WHERE-Bedingungen
  • übersichtlich über die JOIN-Klausel mit verschiedenen Varianten

[Bearbeiten] Aufgaben


Persönliche Werkzeuge