Einleitung
Abfrage von Datenbanken
Erstellen von Datenbanken
Administration von Datenbanken
Datenbankprogrammierung

Die Schnittmenge zweier Tabellen

Das kartesische Produkt

In MySQL folgt der Aufbau einer Datenbank dem relationalen Modell. D.h. mehrere Tabelle stehen in Beziehung zueinander. So auch die Tabelle Bestellung mit der Tabelle Kunde: ein Kunde kann mehrere Bestellungen haben, aber eine Bestellung gehört zu einem Kunden.

In der Tabelle Bestellung wird nun die Kundennummer hinterlegt. Möchte man wissen, welcher Kunde sich dahinter verbirgt, so kann man anhand der Kundennummer in der Tabelle Kunde die entsprechenden Informationen suchen lassen. 

Auch wäre denkbar, herauszufinden, welche Bestellungen von einem Kunden getätigt wurden, wenn man nur den Namen des Kunden hat. Auch dann brauchen wir zwei Tabellen für eine Abfrage. 

im From-Teil des Select-Befehls geben wir alle Tabellen an, welche wir für unsere Abfrage brauchen. 

Verwenden von inner join

Die Ausführung des SQL-Befehls entspricht nicht der Reihenfolge, in welcher wir diesen aufschreiben. 

So schreiben wir: select … from … where , aber der Server führt zuerst den From-Teil aus: Aus allen dort angegebenen Tabellen wird eine große Tabelle erstellt, mit welcher weiterführend die Abfrage bearbeitet wird. 

Geben wir nun mehrere Tabellen an, so wird das kartesische Produkt gebildet. Stellen wir uns vor, wir haben in den Tabellen sehr viele Datensätzen (Tausende oder Millionen), dann entsteht eine sehr große Tabelle, welche im Arbeitsspeichers des Servers für die weitere Bearbeitung temporär gespeichert werden muss. Das ist in der Praxis nicht vorteilhaft. Daher sollte man schon im From-Teil die korrekten Daten der Tabellen miteinander verknüpfen. 

Verwenden des natural joins

Bei einem inner join muss immer auch das Feld angegeben werden, welches zur Verknüpfung der beiden Tabellen verwendet wird.

In MySQL gibt es als (schwache) Alternative die Möglichkeit eines natural joins. Hierbei wird für die Verknüpfung der beiden Tabellen das erste Feld, welches in beiden Tabellen steht, verwendet. 

Cookie Consent Banner von Real Cookie Banner