count()不计算流派

时间:2016-10-28 08:56:44

标签: sql

我有这个架构

列出了表

  

id | movie_id(fk)| USER_ID

电影表

  

id(pk)| genre1 | genre2

所以我想在一个用户的列表中获得最多的重传类型 ,我试过

 SELECT lists.movie_id, movies.genre1, count(movies.genre1) as counting,  movies.id
        FROM movies
        LEFT JOIN lists ON (movies.id = lists.movie_id)
        group by lists.movie_id, movies.genre1, movies.id

此sql查询返回

  

[   {" movie_id":100," genre1":"犯罪""计数":1," ID&#34 ;: 100},{" movie_id":141267," genre1":"犯罪""计数":1," ID&# 34;:141267},{" movie_id":207932," genre1":"犯罪""计数":1,&#34 ; ID":207932},{" movie_id":238636," genre1":"惊悚""计数":1, " ID":238636}   ]

尽管犯罪类型在阵列中存在3次,但它一次只计算一次,它应该是"计数" :犯罪3 我做错了什么?

2 个答案:

答案 0 :(得分:2)

这应该有效,你根本没有按user_id进行分组:

SELECT lists.user_id, movies.genre1, count(movies.genre1) as counting
    FROM movies
    LEFT JOIN lists ON movies.id = lists.movie_id
    group by lists.user_id, movies.genre1

答案 1 :(得分:2)

这样做是因为你按照所有内容进行分组。如果你只按" movies.genre1"你有: 犯罪3 惊悚片1

您在问题中提到您想要每个用户的每种类型的列表,但我没有看到您实际使用用户列?