在findAll中关联计数关联

假设你有一个队列表,agent_queues和代理表。 一个代理可以在许多队列中,一个队列可以有许多代理。 现在让我们假设你正在试图获得队列列表和这些队列中的代理数量。 我希望像下面这样的工作:

queues.findAll({ include: ['agentQueues'], group: ['queues.name', 'queues.matcher', 'queues.id'], attributes: [[Sequelize.fn('count', Sequelize.col('agentQueues.id')), 'agentCount']] }) 

相反,它会产生如下内容:

 SELECT "queues".* FROM (SELECT "queues"."name", "queues"."matcher", "queues"."id", count("agentQueues"."queueId") AS "agentCount" FROM "queues" AS "queues" GROUP BY "name", "matcher", "id" ) AS "queues" LEFT OUTER JOIN "agent_queues" AS "agentQueues" ON "queues"."id" = "agentQueues"."queueId"; 

如果group by和count在子查询中,而不是主查询。 我在这里做错了什么?

一个理想的查询将如下所示:

 SELECT name, matcher, count(agent_queues."queueId") as agentCount FROM queues LEFT OUTER JOIN agent_queues ON "agent_queues"."queueId" = queues.id GROUP BY name, matcher; 

我正在寻找的结果是这样的:

 [{ name: 'Some Queue', matcher: '1 = 1', agentCount: 2 }]