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:
| id | name | alter | talent |
|---|---|---|---|
| 1 | Alice | 30 | singen |
| 2 | Bob | 25 | tanzen |
| 3 | Charlie | 30 | malen |
| 4 | Diana | 28 | singen |
| 5 | Bob | 25 | kegeln |
| 6 | Bob | 25 | kegeln |
| person_id | kurs_id | einschreibungsdatum |
|---|---|---|
| 2 | 1 | 2024-08-15 |
| 4 | 2 | 2024-09-20 |
| 5 | 1 | 2024-08-20 |
| 5 | 3 | 2024-08-21 |
| id | name | datum | preis |
|---|---|---|---|
| 1 | Python Programmieren | 2024-09-01 | 199 |
| 2 | Datenbanken Grundlagen | 2024-10-15 | 249 |
| 3 | Webentwicklung mit HTML & CSS | 2024-11-20 | 179 |
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_id | kurs_id | einschreibungsdatum | id | name | datum | preis |
|---|---|---|---|---|---|---|
| 2 | 1 | 2024-08-15 | 1 | Python Programmieren | 2024-09-01 | 199 |
| 4 | 2 | 2024-09-20 | 2 | Datenbanken Grundlagen | 2024-10-15 | 249 |
| 5 | 1 | 2024-08-20 | 1 | Python Programmieren | 2024-09-01 | 199 |
| 5 | 3 | 2024-08-21 | 3 | Webentwicklung mit HTML & CSS | 2024-11-20 | 179 |
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.
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.
Erstellen Sie eine SQL-Abfrage, welche alle Legodudes zusammen mit ihren Haustieren anzeigt.

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

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.
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.
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:

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.

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).
