Sequelize.js Sequelize-聚合函数多对多
我与我的Sequelize.js Sequelize-聚合函数多对多,sequelize.js,Sequelize.js,我与我的用户和组织表之间的连接组织成员存在多对多关系。我正在尝试创建一个查询,该查询统计组织\u id与特定整数匹配的用户id的数量。我这边的预期结果是一行,其中用户Id的总数作为一列,组织Id作为第二列。我以为我可以通过以下查询实现这一点,但我收到一个错误,未处理的拒绝SequelizeDatabaseError:列“user.user\u id”必须出现在GROUP BY子句中或用于聚合函数。为什么要这样做?很抱歉,缺乏使用SQL的经验,包括聚合和多对多 查询: models.User.fi
用户
和组织
表之间的连接组织成员
存在多对多关系。我正在尝试创建一个查询,该查询统计组织\u id
与特定整数匹配的用户id的数量。我这边的预期结果是一行,其中用户Id的总数作为一列,组织Id作为第二列。我以为我可以通过以下查询实现这一点,但我收到一个错误,未处理的拒绝SequelizeDatabaseError:列“user.user\u id”必须出现在GROUP BY子句中或用于聚合函数
。为什么要这样做?很抱歉,缺乏使用SQL的经验,包括聚合和多对多
查询:
models.User.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('user.user_id')), 'user_count']],
include: [{
model: models.Organization,
where: {
organizationId: req.session.organizationId
},
attributes: ['organization_id'],
group: ['organiztion.organization_id']
}],
})
user_id
first_name
last_name
email
organization_id
org_name
user_id
organization_id
SELECT "user"."user_id" AS "userId",
Count("user"."user_id") AS "user_count",
"organizations"."organization_id" AS
"organizations.organizationId",
"organizations"."organization_id" AS
"organizations.organization_id",
"organizations.organization_member"."created_at" AS
"organizations.organization_member.created_at",
"organizations.organization_member"."updated_at" AS
"organizations.organization_member.updated_at",
"organizations.organization_member"."user_id" AS
"organizations.organization_member.user_id",
"organizations.organization_member"."organization_id" AS
"organizations.organization_member.organization_id"
FROM "user" AS "user"
INNER JOIN ("organization_member" AS "organizations.organization_member"
INNER JOIN "organization" AS "organizations"
ON "organizations"."organization_id" =
"organizations.organization_member"."organization_id")
ON "user"."user_id" = "organizations.organization_member"."user_id"
AND "organizations"."organization_id" = 1;
用户模式:
models.User.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('user.user_id')), 'user_count']],
include: [{
model: models.Organization,
where: {
organizationId: req.session.organizationId
},
attributes: ['organization_id'],
group: ['organiztion.organization_id']
}],
})
user_id
first_name
last_name
email
organization_id
org_name
user_id
organization_id
SELECT "user"."user_id" AS "userId",
Count("user"."user_id") AS "user_count",
"organizations"."organization_id" AS
"organizations.organizationId",
"organizations"."organization_id" AS
"organizations.organization_id",
"organizations.organization_member"."created_at" AS
"organizations.organization_member.created_at",
"organizations.organization_member"."updated_at" AS
"organizations.organization_member.updated_at",
"organizations.organization_member"."user_id" AS
"organizations.organization_member.user_id",
"organizations.organization_member"."organization_id" AS
"organizations.organization_member.organization_id"
FROM "user" AS "user"
INNER JOIN ("organization_member" AS "organizations.organization_member"
INNER JOIN "organization" AS "organizations"
ON "organizations"."organization_id" =
"organizations.organization_member"."organization_id")
ON "user"."user_id" = "organizations.organization_member"."user_id"
AND "organizations"."organization_id" = 1;
组织架构:
models.User.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('user.user_id')), 'user_count']],
include: [{
model: models.Organization,
where: {
organizationId: req.session.organizationId
},
attributes: ['organization_id'],
group: ['organiztion.organization_id']
}],
})
user_id
first_name
last_name
email
organization_id
org_name
user_id
organization_id
SELECT "user"."user_id" AS "userId",
Count("user"."user_id") AS "user_count",
"organizations"."organization_id" AS
"organizations.organizationId",
"organizations"."organization_id" AS
"organizations.organization_id",
"organizations.organization_member"."created_at" AS
"organizations.organization_member.created_at",
"organizations.organization_member"."updated_at" AS
"organizations.organization_member.updated_at",
"organizations.organization_member"."user_id" AS
"organizations.organization_member.user_id",
"organizations.organization_member"."organization_id" AS
"organizations.organization_member.organization_id"
FROM "user" AS "user"
INNER JOIN ("organization_member" AS "organizations.organization_member"
INNER JOIN "organization" AS "organizations"
ON "organizations"."organization_id" =
"organizations.organization_member"."organization_id")
ON "user"."user_id" = "organizations.organization_member"."user_id"
AND "organizations"."organization_id" = 1;
组织\成员架构:
models.User.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('user.user_id')), 'user_count']],
include: [{
model: models.Organization,
where: {
organizationId: req.session.organizationId
},
attributes: ['organization_id'],
group: ['organiztion.organization_id']
}],
})
user_id
first_name
last_name
email
organization_id
org_name
user_id
organization_id
SELECT "user"."user_id" AS "userId",
Count("user"."user_id") AS "user_count",
"organizations"."organization_id" AS
"organizations.organizationId",
"organizations"."organization_id" AS
"organizations.organization_id",
"organizations.organization_member"."created_at" AS
"organizations.organization_member.created_at",
"organizations.organization_member"."updated_at" AS
"organizations.organization_member.updated_at",
"organizations.organization_member"."user_id" AS
"organizations.organization_member.user_id",
"organizations.organization_member"."organization_id" AS
"organizations.organization_member.organization_id"
FROM "user" AS "user"
INNER JOIN ("organization_member" AS "organizations.organization_member"
INNER JOIN "organization" AS "organizations"
ON "organizations"."organization_id" =
"organizations.organization_member"."organization_id")
ON "user"."user_id" = "organizations.organization_member"."user_id"
AND "organizations"."organization_id" = 1;
生成的SQL:
models.User.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('user.user_id')), 'user_count']],
include: [{
model: models.Organization,
where: {
organizationId: req.session.organizationId
},
attributes: ['organization_id'],
group: ['organiztion.organization_id']
}],
})
user_id
first_name
last_name
email
organization_id
org_name
user_id
organization_id
SELECT "user"."user_id" AS "userId",
Count("user"."user_id") AS "user_count",
"organizations"."organization_id" AS
"organizations.organizationId",
"organizations"."organization_id" AS
"organizations.organization_id",
"organizations.organization_member"."created_at" AS
"organizations.organization_member.created_at",
"organizations.organization_member"."updated_at" AS
"organizations.organization_member.updated_at",
"organizations.organization_member"."user_id" AS
"organizations.organization_member.user_id",
"organizations.organization_member"."organization_id" AS
"organizations.organization_member.organization_id"
FROM "user" AS "user"
INNER JOIN ("organization_member" AS "organizations.organization_member"
INNER JOIN "organization" AS "organizations"
ON "organizations"."organization_id" =
"organizations.organization_member"."organization_id")
ON "user"."user_id" = "organizations.organization_member"."user_id"
AND "organizations"."organization_id" = 1;