WHERE Tabellenverbund

Nanu, schon wieder WHERE? Das haben wir doch erst im Kapitel Datenmanipulation kennen gelernt. Tatsächlich kam WHERE in SQL-89 auch bei der Verknüpfung von mehreren Tabellen zum Einsatz. Seit SQL-92 gibt es aber den Befehl JOIN, der mehr Optionen für das Verknüpfen der Tabellen mitsich bringt. Dennoch wird auch heute noch an Schulen die Verknüpfung von Tabellen mit WHERE gelehrt, deshalb möchte ich auch an dieser Stelle nicht darauf verzichten. Der Grund, warum an Schule noch WHERE beim Tabellenverbund genutzt wird, ist wohl der Tatsache geschuldet, dass der Einfach klar und einfach ist, wie man im nachfolgenden Beispiel sieht. Wir besitzen nun die beiden Tabellen Buecher und Autor:

Tabelle Buecher

Tabelle Autor

Nun möchten wir einmal den Titel der Bücher, samt ihres Autoren (Vor- und Nachname) uns ausgeben lassen. Damit das funktioniert, müssen wir in der WHERE Klausel die beiden Tabellen „verbinden“. Dies geht ganz einfach, in dem wir sagen, dass alle Datensätze ausgewählt werden sollen, wo der Primärschlüssel AutorNr der Tabelle Autor mit dem Fremdschlüssel AutorNr in der Tabelle Buecher übereinstimmt. Da beide Schlüssel den gleichen Namen haben, müssen wir den Tabellennamen entsprechend davor schreiben. Die WHERE-Bedingung für den Tabellenverbund würde also lauten:


WHERE Buecher.AutorNr = Autor.AutorNr

Das war es schon. Dieses WHERE müssen wir nun in unsere normale Abfrage aufnehmen, sodass das Ganze dann so aussieht:


SELECT Titel, Vorname, Nachname
 FROM Buecher, Autor
 WHERE Buecher.AutorNr = Autor.AutorNr;

Ausgabe:
Where Tabellenverbund Ausgabe

In der FROM Zeile, müssen natürlich alle Tabellen aufgeführt werden, die verknüpft werden sollen.