Hi, also erstmal ich hab diese Aufgabe :
- Geben Sie zu jedem Film aus dem Jahr 2000 id, Namen sowie die Anzahl der Rollen (benannt Anzahl) aus und sortieren Sie die Liste absteigend nach Anzahl der Rollen. Stellen Sie dabei sicher, dass auch Filme ohne Rollen richtig gelistet sind.
Wir haben einen Table "movies" mit den Attributen : "name", "year", "rank", "id" und einen Table "roles" mit den Attributen : "actor_id", "movie_id", "role"
Nun wäre meine Lösung:
SELECT id, name, count(role) AS Anzahl
FROM movies m LEFT JOIN roles r ON m.id = r.movie_id
Where year = 2000
GROUP BY id, name
Erstmal passt meine Erklärung:
Ich hab einen Left join genommen um auch die Tupel aus dem table movies zu bekommen die keine Rollen haben (in der Aufgabe nachgefragt ) . Daraufhin hab ich pro Film die Rollen gezählt und dann mit group by die Duplikate entfernt.
Hier eine kleine Verständnisfrage: Warum muss ich mit id, name sortieren ?