在 sequelize 中按关联表值查找总和和分组
Posted
技术标签:
【中文标题】在 sequelize 中按关联表值查找总和和分组【英文标题】:Finding sum and grouping by associated table values in sequelize 【发布时间】:2019-11-15 03:03:11 【问题描述】:我有一个如下的捐款表。
捐款表
| id| amount | member_id |
|---|--------|-----------|
| 1 | 500 | 01|
| 2 | 1000 | 02|
| 3 | 2000 | 03|
成员表
| id | name | team_id |
|----|--------|-----------|
| 01 | tom | 02|
| 02 | jerry | 01|
| 03 | jane | 01|
团队表
| id | name |
|----|--------|
| 01 | TeamA |
| 02 | TeamB |
如何求和并按团队分组表如下。
| amount | amount |
|--------|-----------|
| TeamA | 3000|
| TeamB | 500|
我尝试使用以下代码,但它似乎不起作用。
const totalAmount = await DONATIONS.findAll(
attributes: [
'member_id',
[sequelize.fn('sum', sequelize.col('amount')), 'total_amount'],
],
include:[
model: MEMBERS,
include:[
model:TEAMS,
group:['name']
,
],
,
],
);
这不是this question I've asked before的重复项
【问题讨论】:
【参考方案1】:你应该可以在mysql端处理它:
SELECT
MAX(t.name) AS TeamName,
SUM(d.amount) AS TotalAmount
FROM team t
INNER JOIN members m ON t.id = m.team_id
INNER JOIN donations d ON m.id = d.member_id
GROUP BY t.id
;
【讨论】:
难道没有办法使用 sequelize 语法代替原始查询吗? @Muljayan 我不知道。也许检查一下this。以上是关于在 sequelize 中按关联表值查找总和和分组的主要内容,如果未能解决你的问题,请参考以下文章