Modul Datenbanken IN EF Gymnasium Lerbermatt
Docs » sql:join

JOIN mit zwei Tabellen

Syntax von JOIN

SELECT * | Attribut [, Attribut] FROM Tabellenname1
xx [xx];
 
xx :=
INNER | (LEFT|RIGHT [OUTER]) JOIN Tabellenname2
ON Tabellenname1.Attribut = Tabellenname2.Attribut

Aufgabe 1

Erstellen Sie eine neue Abfrage mit den beiden Tabellen "tblKunden" und "tblAnreden". Die Abfrage soll sämtliche Kund*innen mit ihren zugehörigen Anreden zeigen, also etwa so:

  1. Wie viele Datensätze erhalten Sie?
  2. Wie viele Datensätze enthält die Tabelle "tblKunden"?
  3. Was ist da allenfalls schiefgelaufen?

Lösung

  1. Es sollten 85 Datensätze sein
  2. Die Tabelle "tblKunden" hat aber 91 Datensätze
  3. Einige Kunde*innen haben einen leeren String im Attribut "tAnID", dann kommen auch NULL-Werte vor und Werte, welche nicht in der Tabelle "tblAnreden" vorhanden sind. Nr. 17 als "tAnID" gab es vermutlich gar nie, da hat sich jemand vertippt. Nr. 4 als "tAnID" hat es vermutlich mal gegeben, aber irgendwer hat diese Anrede aus der Tabelle "tblAnreden" gelöscht
SELECT tKundenID, tNachname, tVorname, tAnrede
FROM tblKunden INNER JOIN tblAnreden
ON tblKunden.tAnID = tblAnreden.tAnredeID;

Aufgabe 2

Passen Sie die Abfrage so an, dass Sie sämtliche Kund*innen sehen, egal, ob sie einen Wert im Attribut "tAnID" haben oder nicht resp. egal, ob der in der Tabelle "tblAnreden" existiert oder nicht.

Lösung

SELECT tKundenID, tNachname, tVorname, tAnrede
FROM tblKunden LEFT OUTER JOIN tblAnreden
ON tblKunden.tAnID = tblAnreden.tAnredeID;

Aufgabe 3

Nun erstellen Sie eine Liste, welche wie folgt aussieht (die Kunden-ID benötigen Sie nicht):

Dass Sie hier wiederum zu wenig Datensätze kriegen, ist klar, falls Sie einen INNER JOIN verwenden. Das interessiert uns diesmal aber nicht.

Lösung

SELECT tNachname AS Nachname, tVorname AS Vorname, tLandesname AS Land
FROM tblKunden INNER JOIN tblLaender
ON tblKunden.tLandID = tblLaender.tLandID;

Aufgabe 4

Passen Sie Ihre Liste so an, dass sie nur Kund*innen aus der Schweiz, Deutschland und Österreich anzeigt.

Wie viele Datensätze kriegen Sie?

Lösung

Kriegen Sie 13 Datensätze? Dann wäre das nicht ganz korrekt. Wenn Sie 14 haben, dann ist prima.

Tipp: Schauen Sie sich mal Österreich genauer an😂.

Die WHERE-Klausel im SELECT-Befehl können Sie entweder mit OR oder mit IN bauen:

SELECT tNachname AS Nachname, tVorname AS Vorname, tLandesname AS Land
FROM tblKunden INNER JOIN tblLaender
ON tblKunden.tLandID = tblLaender.tLandID
WHERE tLandesname = "Schweiz" OR tLandesname = "Deutschland" OR tLandesname = "Oesterreich";

Und hier noch die Version mit dem IN-Operator:

SELECT tNachname AS Nachname, tVorname AS Vorname, tLandesname AS Land
FROM tblKunden INNER JOIN tblLaender
ON tblKunden.tLandID = tblLaender.tLandID
WHERE tLandesname IN ("Schweiz","Deutschland","Oesterreich");

JOINs und Berechnungen

Sie können Aggregatsfunktionen auch über Tabellen-Joins erstellen.

Beispielsweise könnte die folgende Liste in der Praxis interessant sein:

Aufgabe 5

Erstellen Sie ein SQL-Statement, das diese Liste erstellt.

Senden Sie das Statement per E-Mail der Lehrperson.

Aufgabe 6

Erstellen Sie eine alphabetisch sortierte Liste mit Ländern und geben Sie dabei an, wie viele Kund*innen aus diesem Land vertreten sind. Die Liste könnte etwa wie folgt aussehen:

Lösung

Das könnte so aussehen:

SELECT tLandesname AS Land, COUNT(tblKunden.tKundenID) AS "Anzahl Kunden" FROM tblLaender
LEFT OUTER JOIN tblKunden
ON tblKunden.tLandID = tblLaender.tLandID
GROUP BY tblLaender.tLandesname;
Previous Next

Modul Datenbanken IN EF Gymnasium Lerbermatt

Table of Contents

Inhaltsverzeichnis

  • JOIN mit zwei Tabellen
    • Syntax von JOIN
    • Aufgabe 1
    • Aufgabe 2
    • Aufgabe 3
    • Aufgabe 4
    • JOINs und Berechnungen
    • Aufgabe 5
    • Aufgabe 6

Theorie

  • Grundlagen zu Datenbanken
  • Datenbank-Modelle
  • Relationale Datenbanken
  • Die Abfragesprache SQL

Installation von Software

  • Demo-Datenbank herunterladen
  • SQLite installieren
  • SQLiteStudio verwenden
  • DB Browser for SQLite verwenden

Einführung in SQL

  • Erste Schritte mit SELECT
  • ORDER BY
  • LIMIT
  • WHERE
  • GROUP BY und Aggregation
  • Weitere Berechnungen
  • SELECT vollständig

Über mehrere Tabelle abfragen

  • Was ist ein JOIN?
  • JOIN mit zwei Tabellen
  • JOIN mit drei Tabellen
  • Noch mehr JOINs 😂
  • Noch ein paar Übungen