Sql count()不计算类型
我有这个模式 列表表 id |电影id(fk)|用户id 电影表 id(pk)| genre1 | genre2 所以我想在一个用户的列表中获得最多的复现类型 ,我试过了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)
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!我希望这能帮助你更好的理解。是的,为了简洁起见,我省略了用户的部分。是的,为了简洁起见,我省略了用户的部分