如何进行MySQL查询加入?

时间:2017-05-30 13:48:21

标签: mysql

我已经在stackoverflow上搜索了这个我的特殊问题并没有被问到。

问题:

这是约翰特拉沃尔塔最繁忙的年份,展示了他每年制作电影的年份和电影的数量。

表格

  • 电影(id,title,yr,score,votes,director)
  • 演员(身份证,姓名)
  • 施放(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行,max = 3.如何更正上述代码以限制只有一个最繁忙的年份,保持上面的代码基本上完好无损?

给定解决方案:

SELECT yr,COUNT(title)FROM

电影JOIN强制转换为movie.id = movieid

     JOIN actor   ON actorid=actor.id

其中name =' John Travolta'

GROUP BY yr

HAVING COUNT(title)=(SELECT MAX(c)FROM

(SELECT yr,COUNT(title)AS c FROM

电影JOIN强制转换为movie.id = movieid

     JOIN actor   ON actorid=actor.id

其中name =' John Travolta'

GROUP BY yr)AS t )

最后的话:我希望人们不要在没有仔细阅读问题的情况下停止标记重复,请不要像提问者那样懒散。我从6到7年前开始阅读线索,答案的文明性和成熟度肯定会急剧下降。我无法相信曾经有许多人花时间向他们不知道的新手解释,而不是将别人撕裂。

1 个答案:

答案 0 :(得分: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