我有这个架构
列出了表
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 我做错了什么?
答案 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
您在问题中提到您想要每个用户的每种类型的列表,但我没有看到您实际使用用户列?