sequelize 联表查询 关联子表有复杂的查询条件 统计子表个数的案例
时间: 2024-01-27 16:06:21 浏览: 150
好的,针对你的问题,我来给您提供一个案例,假设我们有两个表:User 和 Order,User 表中保存了用户信息,而 Order 表中保存了订单信息。我们需要查询出用户信息和该用户的订单数量,但是订单数量需要满足一定的条件,比如订单状态为已完成(status = 'completed')。
我们可以使用 Sequelize 中的 include 关键字来实现联表查询,同时使用聚合函数 count 和 where 条件来统计符合条件的订单数量。
具体的代码如下:
```javascript
const { User, Order } = require('./models');
User.findAll({
attributes: ['id', 'name', 'email', [sequelize.fn('COUNT', sequelize.col('orders.id')), 'orderCount']],
include: [{
model: Order,
attributes: [],
where: { status: 'completed' }
}],
group: ['User.id']
}).then(users => {
console.log(users);
}).catch(error => {
console.error(error);
});
```
这个查询语句会返回一个包含用户信息和订单数量的数组,其中每个元素包含 id、name、email 和 orderCount 四个字段。其中 orderCount 表示该用户的符合条件的订单数量。
上面的代码中,我们使用了 Sequelize 中的聚合函数 COUNT 和 col 方法来统计订单数量。同时,我们设置了 include 关键字来指定需要查询的关联表 Order,使用了 where 来设置查询条件。最后,我们使用 group 关键字来指定结果分组的字段为 User.id,以确保每个用户只出现一次。
希望这个案例能够帮到您!
阅读全文