Sequelize join with group by

Posted

技术标签:

【中文标题】Sequelize join with group by【英文标题】: 【发布时间】:2014-12-24 23:18:54 【问题描述】:

我想做的最好用一个小例子来说明。

假设我有以下表格:

表格项

身份证 姓名

表格审核

身份证 评分 itemId

很明显,一个项目有很多评论。

如何编写返回以下两列的查询:

项目名称 (Item.name) 所有项目评分的总和 (Sequelize.fn('sum', sequelize.col('rating')))

我想使用 ORM。

【问题讨论】:

【参考方案1】:

尝试使用这个:

Review.belongsTo(Item, foreignKey:'itemId', as : 'reviews');
Item.hasMany(Review, foreignkey:'id');

Item.findAll(attributes:[['id', 'id'],['name', 'name'],[Sequelize.fn('SUM', 'rating'), 'total']], include:[model:Review, as : 'reviews', required:true], group:['id'], order:[Sequelize.fn('SUM', 'rating'), 'DESC']).success(function(result)
    // return array;
    // total     -----> result[i].total
    // item name -----> result[i].name
)

【讨论】:

以上是关于Sequelize join with group by的主要内容,如果未能解决你的问题,请参考以下文章

c# linq with group by and join 抛出异常

mysql self join with group_concat 并且没有重复

Left Join with same table and group by 以相反的顺序返回重复的元组

如何在 Sequelize 中使用 LEFT JOIN?

在 Sequelize 中使用 JOIN

Join 中的 Sequelize 或条件