2012-06-10 18 views
0

我在此頁面上有以下練習查詢的問題http://sqlzoo.net/3.htm以下SQL動物園查詢顯然是錯的

4d。按照演員名單大小列出1978年的電影。

我試圖做的查詢:

SELECT DISTINCT(m1.title), COUNT(c1.actorid) 
FROM ((movie AS m1 JOIN casting AS c1 ON m1.id=c1.movieid) JOIN actor AS a1 ON a1.id=c1.actorid) 
WHERE m1.yr=1978 
GROUP BY m1.title 
ORDER BY COUNT(c1.actorid) DESC 

但它沒有給出正確的答案,我不知道爲什麼。我錯了嗎?

+0

請添加您的預期答案 –

回答

2

這應做到:

select m.title, count(c.actorid) 
from movie m 
    join casting c on c.movieid = m.id 
where m.yr = 1978 
group by m.title 
order by 2 desc 

當你不需要從演員的任何信息,你不需要包括在加入該表。

BTW:

  1. distinct功能:您的不同顯示了兩個誤解的使用。它始終工作在結果
  2. 的所有列當你做一個group by沒有必要也明顯(作爲組通過將已經只返回分組列的不同值)
+0

好吧,我明白了。我不必加入演員表。但爲什麼這會讓我得到錯誤的答案? – user1319951

+0

@ user1319951:您的查詢返回相同的結果,因此我猜SQLZoo正在分析查詢以查明您是否使用了actor表。順便說一句:加入(在你的發言)周圍的缺口是不需要的,你可以將它們排除在外。 –