Sequelize query with count in inner join
express, node.js, sequelize.js
Solution
Let's assume that `Family` is your `families` sequelize model and `Answer` is your `answers` sequelize model, and `sequelize` is your Sequelize instance
Family.findAll({
attributes: ['*', sequelize.fn('COUNT', sequelize.col('Answers.familyId'))],
include: [
{
model: Answer,
attributes: [],
where: {
isActive: 1,
answer: 1
}
}
],
group: '"Family.id"',
having: sequelize.where(sequelize.fn('COUNT', sequelize.col('Answers.familyId')), '>=', 6)
}).then((families) => {
// result
});
Useful documentation links:
- `sequelize.fn()`
- `sequelize.where()`
- `sequelize.col()`
Problem
I am trying to convert this query to sequelize query object what is the right wayto do it? ``` SELECT families.id, count('answers.familyId') FROM families LEFT JOIN answers on families.id = answers.familyId WHERE answers.isActive=1 AND answers.answer=1 GROUP BY families.id HAVING COUNT('answers.familyId')>=6 ```