我有一个SQL查询(使用mysql作为DB),我现在需要在node.js中重写为sequelize.js查询。
SQL查询
SELECT p.UserID, SUM(p.score), u.username
FROM Picks p
LEFT JOIN Users u
ON p.UserId = u.id
GROUP BY p.UserId;
不太确定如何构造此查询以获得与sequelize相同的结果。
这应该做你需要的:
db.Pick.findAll({
attributes: [
'UserID',
[db.sequelize.fn('SUM', db.sequelize.col('score')), 'score']
],
include: [{
model: db.User,
required: true,
attributes: ['username']
}],
group: ['UserID']
}).then((results) => {
...
})
也许尝试这个(我假设你已经关联Picks
和Users
),你可以通过pick.user.username
访问user.name:
Picks.findAll({
attributes: ['UserID', [sequelize.fn('SUM', 'score'), 'sumScore']]
groupBy: ['UserID']
include: [
model: Users
]
});