2016-12-16 4 views
0

Kann mir jemand zeigen, warum meine Lösung für diese Herausforderung nicht funktioniert?sqlzoo "Mehr beitreten" # 15

http://sqlzoo.net/wiki/More_JOIN_operations

15. Liste der im Jahr durch die Anzahl der Akteure in der Besetzung bestellt 1978 veröffentlicht Filme, dann nach Titel.

SELECT title, COUNT(actorid) AS actors FROM movie 
JOIN casting ON id = movieid 
WHERE yr = 1978 
GROUP BY title 
ORDER BY actors DESC 
+1

Sie nicht durch den Titel bestellen. Du bestellst nur bei den Schauspielern (und du bestellst das "DESC", nach dem die Frage nicht fragt). – Siyual

Antwort

2

, weil Sie die Second-Level-ORDER BY Begriff sind vermisst. Es sollte sein:

ORDER BY actors DESC, title 

(Die Frage fragt nicht explizit für absteigende Reihenfolge, aber ihre offizielle „richtige Antwort“ wird auf diese Weise bestellt hat.)

+0

Ich habe dies versucht, aber eine Fehlermeldung erhalten: Fehler: Mischen von GROUP Spalten (MIN(), MAX(), COUNT(), ...) ohne GROUP-Spalten ist illegal, wenn es keine GROUP BY-Klausel – veron

+0

@veron : Ich habe diesen Fehler nicht bekommen. Haben Sie immer noch die Klausel 'GROUP BY title'? – dan04

+0

Das stimmt. Die GROUP BY-Klausel soll vor ORDER BY-Akteuren DESC, title gehen. Es funktioniert jetzt. – veron

1

Da die Anforderungen, die Sie bitten, durch die Anzahl zu bestellen von Schauspielern und dann Titel. Deshalb haben Sie title in Order by Klausel hinzuzufügen:

SELECT title, COUNT(actorid) AS actors FROM movie 
JOIN casting ON id = movieid 
WHERE yr = 1978 
GROUP BY title 
ORDER BY actors DESC, title