我正在处理一个查询,该查询返回用户的名称,ID以及属于该用户的操作和评论数量。这是SQL中的查询:
SELECT users.id, users.name, (
SELECT count(*) from actions where users.id = actions.user_id
) as Action_Count, (
SELECT count(*) from comments where users.id = comments.user_id
) as Comment_Count
FROM users
我对Sequelize有点新鲜,但经过几个小时的搜索和多次尝试后,我似乎无法弄清楚如何正确地编写它。所以我希望这里有人可以帮助指导我。这是我最好的尝试:
User.findAll({
attributes: ['name','id',
[Sequelize.fn('count', Sequelize.col('actions.user_id')), 'count_of_actions'],
[Sequelize.fn('count', Sequelize.col('comments.user_id')), 'count_of_comments']
],
include: [{ attributes: [], model: Action },{ attributes: [], model: Comment }],
group: ['user.id'],
order: [['createdAt', 'ASC']]
})
但如果有任何评论,这会返回Action_Count
和Comment_Count
(两者相乘)的相同数字。
非常感谢任何帮助或指示!
答案 0 :(得分:0)
我今天也面临着同样的问题。这是我通过添加独特功能来解决此问题的答案:
devtools::check()
帖子很旧,希望对您有所帮助。