Поиск суммы и группировка по связанным значениям таблицы в sequelize - PullRequest
2 голосов
/ 04 июля 2019

У меня есть таблица пожертвований следующим образом.

Таблица пожертвований

| 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']
        },
      ],
    },
  ],
});

Это не дубликат этого вопроса, который я задавал раньше

1 Ответ

1 голос
/ 04 июля 2019

Вы должны быть в состоянии справиться с этим на стороне 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
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...