0

このページhttp://sqlzoo.net/3.htmの次の演習クエリに問題があります。

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

しかし、正しい答えは得られず、その理由はわかりません。私が間違っている?

4

1 に答える 1

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

アクターからの情報は必要ないため、そのテーブルを結合に含める必要はありません。

ところで:あなたのdistinctの使い方は2つの誤解を示しています:

  1. distinct関数ではありません結果のすべての列で常に動作します
  2. あなたが行うときgroup by、個別にする必要はありません(group byはすでにグループ化された列の個別の値のみを返すため)
于 2012-06-10T11:19:17.317 に答える