Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Aufgabe aus Klausur von 2012
Hi, kann mir jemand bitte die Lösung zu der Aufgaben 5.2 und 5.3 sagen? das wäre voll die hilfe!
https://fsi.informatik.uni-erlangen.de/dw/_media/pruefungen/bachelor/konzmod_2012-02-15.pdf
Stell doch mal Deine Lösungen vor. Dann kann man drüber diskutieren.
ok, na klar:
CREATE VIEW schauspieler AS
SELECT COUNT(*) AS anzahl,
Schauspier.ID,
Schauspieler.Name
FROM Schauspieler
JOIN spielt_in USING SchauspielerID
JOIN Film USING FilmID
GROUP BY Schauspieler.ID, Schauspieler.Name
ORDER BY Schauspieler.ID ASC;
Das ist der View, den ich mir erstellt habe.
Wie bekomme ich daraus die Anzahl an Schauspieler mit mehr als 10 Filme ohne mehrere Rollen?
Bei der Aufgabe 5.3 verstehe ich das a,b im From nicht…normalerweise muss ja da einen Relation stehen oder und nicht nur einfach ein Wert aus einer Tabelle.
Hallo,
hab mir die nun auch mal angeschaut. Verstehe nicht so ganz wieso man hier einen View erstellen sollte bzw. inwiefern dieser hilfreich ist.
SELECT Schauspieler.Name as Name, COUNT(DISTINCT FilmID) as Anzahl
FROM spielt_in JOIN Schauspieler USING(SchauspielerID) JOIN Film USING(FilmID)
GROUP BY SchauspielerID, Schauspieler.Name
HAVING COUNT(DISTINCT FilmID) > 10;
Funktioniert soweit auch, hab das ganze auf SQL Fiddle mal getestet.
Ich vermute mal die Aufgabenstellung ist nicht ganz vollstaendig oder war zur Verwirrung auf die Weise gestellt. Der Hinweis “wenn ein Schauspieler mehrere Rollen in einem Film besetzt hat, zaehlt es als ein Film” ist naemlich ueberfluessig, da ein Paar (Schauspieler,Film) sowieso nur ein einziges Mal in der Tabelle stehen kann. Und wenn Rolle mit im Primary key steht, dann braucht man, wie m0kab0 gezeigt hat, keine View.:-p