Как корректно создать колонку с подсчетом объектов в другой колонке?
Пытаюсь сделать запрос, в котором хочу получить соединенные три таблицы: students, lessons, teachers, при этом мне нужно добавить колонку studCount, в которой будет считаться количество студентов для этого урока Сейчас запрос выглядит так:
const query = await Lesson.findAll(
{
attributes: {
include: [
[
db.Sequelize.fn("COUNT", db.Sequelize.col("students.id")),
"studCount",
],
],
},
limit: null,
offset: null,
include: [
{
model: Student,
attributes: [],
through: {
attributes: [],
},
},
{
model: Teacher,
attributes: [],
through: {
attributes: [],
},
},
],
order: ["id"],
group: ["lesson.id"],
raw: true
},
);
Проблема в том, что studCount сейчас неправильно считает количество студентов, но группировка по lesson.id происходит, что мне и нужно.
Но мне нужно, чтобы считало верно, и я мог вывести все столбцы, а не только с подсчетами или только без них
Почему-то когда я пытаюсь всё соединить, sequelize ругается на group by, что надо туда всё передавать, но тогда у меня опять получается куча записей с одинаковыми id, всё разбивается.
Должно выйти что-то вроде
id: 1,
date: '27-07-2021',
title: 'lesson 1',
status: 'true',
students: [{id: 2, name: 'Boris'},
{id: 4, name: 'Ivan'}],
teachers: [{id: 1, name: 'Alexandra'}],
studCount: 2