Hallo, ich habe eine eigentlich recht einfache
SQL-Anfrage.
Eine TV-Serie hat mehrere Episoden, in welchen je mehrere Schauspieler eine Rolle spielen.
Ich möchte die Schauspieler herausfinden, welche in 2 verschiedenen TV-Serien eine Rolle hatten. Konkret die Schauspieler welche sowohl mal bei Big Bang und Desperate Housewives mitgespielt haben.
Das Übungsblatt kommt von der Uni (ist nur eine von mehreren Aufgaben).
Wortlaut:
"
Welche Personen haben in der Serie The Big Bang Theory und auch in der Serie Desperate Housewives mitgespielt. Geben Sie den Namen der Person und die jeweilige Rolle in den Serien aus.
Keine Person soll mehrfach in der Ergebnisliste auftauchen. Verwenden Sie weder SQL-Mengenoperationen noch Unteranfragen."
Mein Problem habe ich mal fett markiert. Ich bekomm es nicht zu Stande ohne meine geliebten SubSelects. Außerdem weiß ich nicht, ob Rollen-Namen verkettet (zb mit Komma) in einer Spalte hinter dem Namen der Person stehen sollen oder dann doch 2 Zeilen für jede Person okay sind. Im ersten Fall fände ich es ziemlich happig.. dann müsste ich ja String-Aggregate verwenden.
Wäre nett wenn jemand das Statement schreiben könnte...
// Relevanter Auszug aus dem Schema:
SERIES (series, title, yearnull)
EPISODE (production→PRODUCTION, series→SERIES, seasonnull, episodenull, air_datenull)
PLAYS (person→PERSON, production→PRODUCTION, role)
PERSON (person, Name)
Und hier mein Ansatz, der mir schon mal alle Schauspieler mit der Rolle in der entsprechenden Serie liefert:
Delphi-Quellcode:
SELECT DISTINCT
per.NAME, p.role
FROM
SERIES S
JOIN EPISODE E ON S.SERIES = E.SERIES
JOIN PLAYS p ON p.PRODUCTION = E.PRODUCTION
JOIN PERSON per ON per.PERSON = p.PERSON
WHERE S.TITLE = 'The Big Bang Theory' OR S.TITLE = 'Desperate Housewives';
Wenn es eine Lösung gibt, die mir 3 Spalten gibt:
Name, "Rolle in DespHous", "Rolle in BigBang", ich wäre sehr dankbar und würde mir genau ansehen, wie die Anfrage strukturiert ist. VIELEN Dank
Achso ja, das obligatorische "ich bin verzweifelt und komme echt nicht weiter" .. hier ist es