Zum Inhalt springen

Kostenlose Lerninhalte

/informatik/163033/aufgabe

Frei zugängliche, geprüfte Lerninhalte zum Verstehen, Wiederholen und selbstständigen Üben.

Aufgabe

/informatik/163033/aufgabe

/informatik/163033/aufgabe

Du hast folgende Tabellen zur Verwaltung der Datenbank eines Streaminganbieters:

Tabellen des Streamingdienstes

Du möchtest nun durch eine SQL-Anfrage den Namen und das Preismodell aller Nutzer, die mehr als 2000 Nutzungsstunden haben und findest online, dass dazu im FROM-Statement der SQL-Abfrage mehrere Tabellen angegeben werden können und man mit TABELLENNAME.Attributname auf das jeweilige Attribut einer Tabelle zugreifen kann.

Deine Abfrage lautet

sql
SELECT NUTZER.UserID, ZAHLUNGSDATEN.KundenID, 
       ZAHLUNGSDATEN.Name, ZAHLUNGSDATEN.Preismodell
FROM NUTZER, ZAHLUNGSDATEN
WHERE NUTZER.Nutzungsstunden > 2000;

Du stutzt über das Ergebnis, statt 5 Zeilen hat deine Tabelle 45 Zeilen. Ein Ausschnitt sieht so aus:

kartesisches Produkt

Schau dir die Ausgangssituation und das Ergebnis an. Beschreibe anschließend in eigenen Worten: Was ist hier passiert?

Lösung anzeigen
Lösung
Voraussetzung
Abfragen über mehrere Tabellen
Strategie

Betrachte die KundenIDs und die UserIDs. Was fällt dir auf?

Schritte

In der Tabelle NUTZER sind 5 Profile, die den Suchkriterien entsprechen. Sie haben die UserIDs 11, 221, 342 ,522 und 2342.

In der Tabelle ZAHLUNGSDATEN gibt es ingsesamt 9 Einträge. Die Einträge, die zur Suchanfrage passen, kannst du über die Fremdschlüsselbeziehung der beiden Taebllen leicht herausfinden. Es sind die von Paul Mastrich, Klaus Wagner, Gertrude Winkel, Benoit Fronc und Bernhard Füssel:

Paarungen NUTZER und ZAHLUNGSDATEN

Allerdings siehst du im Ausschnitt der Ergebnistabelle zum Beispiel auch Sven Berger, der mit keinem seiner Profile mehr als 2000 Stunden gestreamt hat.

Außerdem wird Paul Mastrich insgesamt 5 Mal gelistet - einmal mit jeder der 5 UserIDs

Es werden also alle 9 Personen, die in den ZAHLUNGSDATEN hinterlegt sind, mit allen 5 UserIDs kombiniert.

Das ergibt Einträge in der Ergebnistabelle.

Es wurde ein sogenanntes kartesisches Produkt gebildet: Alle Einträge, die du aus der einen Tabelle (nach der Selektion) entnommen hast, werden mit allen Einträgen aus der anderen Tabelle kombiniert.