需要统计一个连续的表行sequelize

问题描述 投票:0回答:1

我正在使用sequelize查询sqlserver数据库。我有两张桌子:

data: columns - id, name, team, type

history:columns - id, node, date, status, data_id(foreignkey)

和一种关系

history.belongsTo(data, {foreignKey: 'data_id'}

data.hasMany(history, {foreignKey: 'data_id'})

我的查询是:

dataModel.findAll({
    attributes: ['name'],
    include: [{
        model:historyModel
    }]
})

我的结果如下:

[
    {
         name: "1",
         history: [
             {
                 ...
             }
         ]
    },
    {
         name: "2",
         history: [
             {
                 ...
             }
         ]
    }
]`

我想要的不是历史数组,而是每个历史数组都有历史对象的数量。 sql中的查询是:

select data.name, count(history.data_id) count 
from history 
inner join data on data.id=history.data_id 
group by history.data_id, data.name
javascript node.js sequelize.js
1个回答
1
投票

你可以这样做:

dataModel.findAll({
    attributes: { 
        include: [[Sequelize.fn("COUNT", Sequelize.col("history.data_id")), "historyModelCount"]] 
    },
    include: [{
        model: historyModel, attributes: []
    }],
    group: ['data.id']
});
© www.soinside.com 2019 - 2024. All rights reserved.