当我在 nodejs 中使用 sequelize 进行分组时,我被计为 1 而不是 0
i am getting count as 1 instead of 0 when i did groupby using sequelize in nodejs
我有两个table“项目”和“公司”。我在 sequelize 中将他们的模型创建为 'Project' 和 'Company'。
项目 table 包含
project_id
company_id
project_name
1
1
project1
2
2
project2
3
2
project3
公司table包含
company_id
company_name
1
xyz
2
test
3
abc
我的要求是获取公司table中的所有公司以及他们拥有的项目数量。
我已经在 sequelize as
中编写了查询
const result = await Company.findAll({
attributes: [ ['company_id', 'id'] ,'company_name', [Sequelize.fn('COUNT', 'Project.project_id'), 'no_of_projects'] ],
include: [{ model: Project, attributes: [] }],
group: ['company_id'],
order: [
[sortBy, sortOrder]
],
offset: index,
limit: limit,
subQuery: false
})
但是对于公司“abc”,我得到的 no_of_projects 是 1 而不是 0,因为它没有任何项目。如果公司没有项目,我需要将 no_of_projects 设置为 0。我是 sql 和续集的新手。谁能帮我解决这个问题。提前致谢。
这些是协会
Company.associate = 函数(模型){
Company.hasMany(models.Project, {
外键:“company_id”
})
}
Project.associate = 函数(模型){
Project.belongsTo(models.Company, {
外键:'company_id',
})
}
如果你想要 SQL 那么你可以使用以下内容:
select c.company_id, c.company_name, count(p.project_id) as num_of_project
from company c left join project p on p.comapny_id = c.company_id
group by c.company_id, c.company_name
我发现我的 sequelize 查询有误。
而不是 [Sequelize.fn('COUNT', 'Project.project_id')
当我用 [Sequelize.fn('COUNT', Sequelize.col('project_id')) 替换它时它起作用了
我需要将其指定为要续集的列,否则它会将空字符串视为值。这就是为什么我被计为 1 而不是 0 的原因。
我有两个table“项目”和“公司”。我在 sequelize 中将他们的模型创建为 'Project' 和 'Company'。
项目 table 包含
project_id | company_id | project_name |
---|---|---|
1 | 1 | project1 |
2 | 2 | project2 |
3 | 2 | project3 |
公司table包含
company_id | company_name |
---|---|
1 | xyz |
2 | test |
3 | abc |
我的要求是获取公司table中的所有公司以及他们拥有的项目数量。
我已经在 sequelize as
中编写了查询const result = await Company.findAll({
attributes: [ ['company_id', 'id'] ,'company_name', [Sequelize.fn('COUNT', 'Project.project_id'), 'no_of_projects'] ],
include: [{ model: Project, attributes: [] }],
group: ['company_id'],
order: [
[sortBy, sortOrder]
],
offset: index,
limit: limit,
subQuery: false
})
但是对于公司“abc”,我得到的 no_of_projects 是 1 而不是 0,因为它没有任何项目。如果公司没有项目,我需要将 no_of_projects 设置为 0。我是 sql 和续集的新手。谁能帮我解决这个问题。提前致谢。
这些是协会
Company.associate = 函数(模型){ Company.hasMany(models.Project, { 外键:“company_id” }) }
Project.associate = 函数(模型){ Project.belongsTo(models.Company, { 外键:'company_id', }) }
如果你想要 SQL 那么你可以使用以下内容:
select c.company_id, c.company_name, count(p.project_id) as num_of_project
from company c left join project p on p.comapny_id = c.company_id
group by c.company_id, c.company_name
我发现我的 sequelize 查询有误。 而不是 [Sequelize.fn('COUNT', 'Project.project_id') 当我用 [Sequelize.fn('COUNT', Sequelize.col('project_id')) 替换它时它起作用了 我需要将其指定为要续集的列,否则它会将空字符串视为值。这就是为什么我被计为 1 而不是 0 的原因。