Zum Hauptinhalt springen

Tabellen kombinieren

Die meisten Datenbanken bestehen aus mehreren Tabellen, die miteinander in Beziehung stehen. Um Informationen aus mehreren Tabellen zu kombinieren, verwenden wir den JOIN-Befehl.

Verwenden wir wieder die drei Tabellen aus dem vorherigen Kapitel:

personen
idnamealtertalent
1Alice30singen
2Bob25tanzen
3Charlie30malen
4Diana28singen
5Bob25kegeln
6Bob25kegeln
einschreibungen
person_idkurs_ideinschreibungsdatum
212024-08-15
422024-09-20
512024-08-20
532024-08-21
kurse
idnamedatumpreis
1Python Programmieren2024-09-01199
2Datenbanken Grundlagen2024-10-15249
3Webentwicklung mit HTML & CSS2024-11-20179

Um beispielsweise herauszufinden, ob sich für einen bestimmten Kurs überhaupt Teilnehmer eingeschrieben haben, können wir die Tabellen einschreibungen und kurse miteinander verbinden. Dabei verwenden wir die Spalte kurs_id aus der Tabelle einschreibungen und die Spalte id aus der Tabelle kurse, da diese beiden Spalten jeweils denselben Kurs identifizieren:

SELECT * FROM einschreibungen JOIN kurse ON einschreibungen.kurs_id = kurse.id;

Als Ergebnis erhalten wir folgende Tabelle:

person_idkurs_ideinschreibungsdatumidnamedatumpreis
212024-08-151Python Programmieren2024-09-01199
422024-09-202Datenbanken Grundlagen2024-10-15249
512024-08-201Python Programmieren2024-09-01199
532024-08-213Webentwicklung mit HTML & CSS2024-11-20179

Wir sehen, dass sich für alle drei Kurse Teilnehmer eingeschrieben haben. Der Kurs «Python Programmieren» taucht sogar zweimal auf, da sich zwei verschiedene Personen dafür angemeldet haben.

Arbeitsanweisungen

Gehen Sie bei den Aufgaben in diesem Abschnitt wieder genau gleich vor, wie bei allen bisherigen SQL-Aufgaben: Öffnen Sie pro Aufgabe einen neuen SQL-Editor-Tab und speichern Sie die Abfrage anschliessend im Ihrem OneDrive-Ordner.

Verwenden Sie bei der Benennung das Namensschema JOIN Abfrage [Nummer].sql.

Markieren Sie diese Aufgabe als erledigt, wenn Sie die Anweisungen gelesen und verstanden haben.

1. Alle Legodudes mit ihren Haustieren

Erstellen Sie eine SQL-Abfrage, welche alle Legodudes zusammen mit ihren Haustieren anzeigt.

Laden...
2. Alle US-Legodudes mit ihren Haustieren

Erstellen Sie eine SQL-Abfrage, welche alle Legodudes aus den USA zusammen mit ihren Haustieren anzeigt.

Laden...
3. Spezifische Kombinationen

Erstellen Sie eine SQL-Abfrage, welche alle Legodudes zusammen mit ihren Haustieren anzeigt, wenn Sie:

  • entweder aus Schweden stammen
  • oder aus den USA stammen und ihr Haustier als Lieblingsfutter «Körner» hat.
Laden...

Projektionen

Oft sind die Tabellen, die wir miteinander verbinden, sehr gross und enthalten viele Spalten. Um die Ausgabe übersichtlicher zu gestalten, können wir mit Projektionen nur diejenigen Spalten auswählen, die wir wirklich benötigen. Das Prinzip kennen Sie auch bereits: Statt SELECT * schreiben wir einfach SELECT spalte1, spalte2, .... Das ist eine Projektion.

4. Projektion

Kopieren Sie Ihre SQL-Abfrage aus der letzten Aufgabe in einen neuen Editor-Tab und passen Sie diese so an, dass nur noch der Name des Legodudes und die Tierart des Haustiers angezeigt werden:

Laden...
5. Duplizierte Spaltennamen

Kopieren Sie Ihre SQL-Abfrage aus der letzten Aufgabe in einen neuen Editor-Tab und passen Sie diese so an, dass nun zudem auch noch der Name des Haustiers angezeigt wird.

Achtung: Das ist nicht ganz so einfach, wie es auf den ersten Blick scheint! Es haben nämlich sowohl die Tabelle legodudes als auch die Tabelle haustiere eine Spalte namens name. Wenn wir also einfach SELECT name, tierart, name schreiben, weiss die Datenbank nicht, welchen der beiden name-Spalten wir meinen.

Um das zu lösen, müssen wir den Tabellennamen vor den Spaltennamen schreiben, um die Spalte eindeutig zu identifizieren. Beispielsweise schreiben wir legodudes.name, wenn wir die name-Spalte aus der Tabelle legodudes meinen.

Laden...
6. Spalten umbenennen

Die Abfrage funktioniert jetzt zwar, doch ist das Ergebnis noch nicht so schön: Wir haben eine Spalte name und eine Spalte name:1, was nicht sehr aussagekräftig ist.

Kopieren Sie Ihre SQL-Abfrage aus der letzten Aufgabe in einen neuen Editor-Tab und passen Sie diese so an, dass Sie im Ergebnis eine Spalte name_legodude und name_haustier erhalten.

Dazu brauchen Sie ein sogenanntes Alias. Ein Alias ist ein alternativer Name, den wir einer Spalte geben können. Dazu verwenden wir das Schlüsselwort AS (dt.: als).

Das Schema zur Verwendung eines Alias ist:

SELECT tabelle.spalte AS alias

wobei Sie tabelle und spalte durch die entsprechenden Tabellennamen und Spaltennamen ersetzen und für alias einen aussagekräftigen Namen wählen. Die zu verwendenden Alias-Namen sind in dieser Aufgabe bereits vorgegeben ist (name_legodude, resp. name_haustier).

Laden...