Zum Inhalt springen

Kostenlose Lerninhalte

/informatik/163116/aufgabe

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

Aufgabe

/informatik/163116/aufgabe

/informatik/163116/aufgabe

Ein Streaminganbieter speichert Informationen über seine Nutzer in einer Datenbank.

Die Tabellen sehen beispielsweise so aus, wobei NUTZER.ZAHLUNGSDATEN_KundenID ein Fremdschlüssel zur Tabelle ZAHLUNGSDATEN ist:

Beispielausprägung der Streamingdatenbank

In dieser Datenbank können bei Preismodellen wie "For-Two" oder "Family" mehrere Nutzer zu einem Kunden und seinen Zahlungsdaten gehören, weswegen zwischen den Tabellen NUTZER und ZAHLUNGSDATEN eine 1:n-Beziehung gilt.

Die Finanzabteilung möchte wissen, welche Preismodelle hinter den Kunden stecken, die mehr als 2000 Stunden gestreamt haben.

Formuliere eine SQL-Anfrage, die den zugehörigen Kundennamen und das Preismodell aller Nutzer heraussucht, die mehr als 2000 Stunden gestreamt haben.

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

Schritte

Ausgegeben werden sollen der Name und das Preismodell aus ZAHLUNGSDATEN:

sql
SELECT ZAHLUNGSDATEN.Name, ZAHLUNGSDATEN.Preismodell

Da die Nutzungsstunden in der Tabelle NUTZER liegen, müssen Daten aus zwei Tabellen verwendet werden:

sql
FROM NUTZER,ZAHLUNGSDATEN

Damit man nicht das kartesische Produkt bekommt, sondern den natürlichen Verbund, muss die Fremdschlüssel-Beziehung zwischen den Tabellen genutzt werden:

sql
WHERE ZAHLUNGSDATEN.KundenID =NUTZER.ZAHLUNGSDATEN_KundenID

Zusätzlich sollen jetzt nur die Datensätze angezeigt werden, in denen der Nutzer mehr als 2000 Stunden gestreamt hat. Mehrere Bedingungen, die gleichzeitig gelten sollen, werden mit AND verbunden:

sql
AND NUTZER.Nutzungsstunden> 2000;

Die komplette Abfrage lautet also:

sql
SELECT ZAHLUNGSDATEN.Name, ZAHLUNGSDATEN.Preismodell
FROM NUTZER, ZAHLUNGSDATEN
WHERE ZAHLUNGSDATEN.KundenID = NUTZER.ZAHLUNGSDATEN_KundenID
AND NUTZER.Nutzungsstunden > 2000;