У меня есть 3 таблицы со следующими ассоциациями.
STUDENTS.hasMany(REPORTS);
REPORTS.belongsTo(STUDENTS);
REPORTS.hasMany(TASKS);
TASKS.belongsTo(REPORTS);
Таблица задач
| id | name | report_id |
|----|--------|-------------|
| 01 | taskA | 01 |
| 02 | taskB | 02 |
| 03 | taskC | 03 |
Таблица отчетов
| id | student_id |
|----|------------|
| 01 | 01 |
| 02 | 02 |
| 03 | 01 |
Стол студентов
| id | name |
|----|------|
| 01 | tom |
| 02 | jim |
Я пытаюсь создать вывод, который выглядит следующим образом. Здесь у меня есть имя студентов и количество выполненных ими задач (связанных через таблицу отчетов).
| student| no_of_tasks |
|--------|-------------|
| tom | 01 |
| jim | 02 |
Ниже приведен запрос, который я пытался использовать с помощью sequelize, но, похоже, он не работает.
STUDENTS.findAll({
attributes: [
'name',
],
include: [
{
model: REPORTS,
attributes: [
[sequelize.fn('COUNT', sequelize.col('tasks.id')), 'no_of_tasks'],
],
include: [
{
model: TASKS,
attributes: [],
},
],
},
],
raw: true,
nest: true,
});
Мне известно, что это решение можно получить с помощью необработанных запросов SQL
но я надеюсь найти ответ, используя Sequelize js ORM.