【问题标题】:Finding sum and grouping by associated table values in sequelize在 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的重复项

【问题讨论】:

    标签: mysql node.js express sequelize.js


    【解决方案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
    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2016-09-30
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多