Sql count()不计算类型

Sql count()不计算类型,sql,Sql,我有这个模式 列表表 id |电影id(fk)|用户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)

我有这个模式

列表表

id |电影id(fk)|用户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查询正在返回

[ {“电影id:100”,genre1:“犯罪”,“计数”:1,“id:100},{“电影id:141267”,genre1:“犯罪”,“计数”:1,“id:141267},{“电影id:207932”,genre1:“犯罪”,“计数”:1,“id:207932},{“电影id:238636”,genre1:“惊悚片”,“计数”:1,“id:238636} ]

虽然犯罪类型在数组中出现了3次,但它一次只出现一次,应该是“计数”:3次代表犯罪
我做错了什么?

这应该行得通,你根本没有按用户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

这应该行得通,您根本没有按用户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

它之所以这样做是因为你是按所有东西分组的。如果您仅按“movies.genre1”分组,您将有: 罪行3 惊悚片1


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

之所以这样做,是因为您按所有内容进行分组。如果您仅按“movies.genre1”分组,您将有: 罪行3 惊悚片1


您在问题中提到,您需要每个用户的每个流派列表,但我没有看到您实际使用用户列?

请发送表格脚本和任何虚拟数据插入脚本。我是Mohamed!我希望这有助于您最好的regardspls发送表脚本和任何虚拟数据插入脚本。我是Mohamed!我希望这能帮助你更好的理解。是的,为了简洁起见,我省略了用户的部分。是的,为了简洁起见,我省略了用户的部分