Подсчет данных столбца в Sequelize

У меня есть две таблицы, связанные друг с другом в Sequelize, и я хочу подсчитать следующие

Столбцы таблицы вакансий: «id», «имя»

Столбцы рабочей таблицы: 'id', 'name', 'job_id'

Допустим, у нас есть 5 рабочих мест, доступных прямо сейчас, и много рабочих, связанных с job_id. Я хочу показать «идентификатор» задания, «имя» и подсчитать, сколько рабочих имеют один и тот же job_id.

Пример: {id: 1, имя: Инженер, количество: 6}; это означает, что в рабочей таблице 6 рабочих имеют job_id = 1

Мой запрос выглядит так:

Jobs.findAll({
attribute:['id', 'name'],
include: [
    {
    model: Worker,
    attributes: [[Sequelize.fn('count', Sequelize.col('job_id')), 'count']]
    }
],
group: ['Job.id', 'Worker.id']
})

Дает мне следующий результат без счета:

[
   {
    "id": 7,
    "name": "Doctor",
    "users": []
   },
   {
    "id": 1,
    "name": "Engineer",
    "users": [
              {
               "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              }
            ]
         },
     {
       "id": 4,
       "name": "Pilot",
       "users": []
     }
]

Принимая во внимание, что он должен подсчитывать все job_id пользователей, как показано ниже:

    "id": 1,
    "name": "Engineer",
    "count": 6

person Angels    schedule 10.06.2020    source источник


Ответы (1)


вы должны определить количество в атрибутах Job, как это.

Jobs.findAll({
    attribute: ['id', 'name', [sequelize.fn("COUNT", sequelize.col('Worker.job_id')), "count"]],
    include: [
        {
            model: Worker,
            attributes: []
        }
    ],
    group: ['Worker.job_id', 'Job.id']
})

надеюсь, это поможет вам.

person Vyas Arpit    schedule 11.06.2020
comment
@Angels, если это относится к вашей очереди, пожалуйста, проголосуйте и считайте это ответом отмеченным. Так что можете закрыть эту очередь. - person Vyas Arpit; 12.06.2020