2017-05-30 59 views
-6

我已經在stackoverflow上搜索,這個問題沒有被問到。如何做MySQL查詢加入?

問:

這當中最繁忙的年,「約翰·特拉沃爾塔」,顯示年,他每年做任何一年中,他取得了超過2部電影電影的數量。

  • 電影(ID,標題,年,評分,投票,導演)
  • 演員(ID,姓名)
  • 鑄造(movieid,actorId來,ORD)

查詢

SELECT y.yr,MAX(y.count) 

FROM(
SELECT movie.yr,COUNT(movie.yr) AS count 

FROM (movie JOIN casting ON (movie.id=movieid)) JOIN actor ON (actor.id=actorid) 

WHERE name='John Travolta' 

GROUP BY yr 
ORDER BY COUNT(movie.yr) DESC) y 
GROUP BY yr 

結果顯示MAX(y.count)範圍從1到3的許多行,但接受的答案只顯示1行,最大值爲3.我如何糾正上述代碼限制爲僅一個最繁忙的一年,保持上述代碼基本完好?

給出解決方案:

SELECT年,COUNT(標題)FROM

電影JOIN鑄就movie.id = movieid

 JOIN actor ON actorid=actor.id 

其中name = '約翰屈伏塔'

GROUP BY年

HAVING COUNT(標題)=(SELECT MAX(c)由

(SELECT年,COUNT(標題)AS C來自

電影JOIN鑄造ON movie.id = movieid

 JOIN actor ON actorid=actor.id 

其中名稱= '約翰屈伏塔'

GROUP BY年)爲T )

最後的話:我希望人們ST如果不仔細閱讀問題,請標記爲重複,請不要像提問者懶惰一樣行事。我一直在閱讀6 - 7年前的主題,肯定會在答案的文明程度和成熟度方面急劇下降。我不敢相信曾經有很多人慷慨地花時間向他們不認識的新手解釋,而不是撕裂別人。

+0

你有沒有試過看msql手冊? – ThisGuyHasTwoThumbs

+0

請參閱https://meta.stackoverflow。com/questions/333952/why-should-i-provide-an-mcve-for-what-seem-to-be-a-very-simple-sql-query – Strawberry

+0

Simple 3 table join,count,where ,按組排序,並且我看到不需要子查詢。 – xQbert

回答

1

類似這樣的事情嗎?

select t2.yr, count(*) as NbMovies 
from movie t1 
inner join casting t2 on t1.id=t2.movieid 
inner join actor t3 on t3.id=t2.actorid 
where t3.name='John Travolta' 
group by t2.yr 
having count(*)>2 
order by NbMovies desc 
+0

確實不應該使用col數字,而是使用您創建的別名。更新選擇無序調整以排序可能會導致傾斜結果。最好不要早早教壞習慣。 – xQbert

+0

一切都很好教,但我同意;)) – Esperento57

+0

我試過這個查詢,但它說'未知列't'字段'在'字段列表' –