sequelize怎么查询 所有用户订单总数?
使用的是sequelize
框架
用户表user
id name
1 张三
2 李四
3 王五
订单表order
id user_id
1 1
2 1
3 1
4 2
期望输出结果
id name count
1 张三 3
2 李四 1
3 王五 0
这上面两张表结构如何查询用户的订单总数呢?
订单表中只出现了用户id(1,2)两个用户的订单数据,用户user_id = 3的用户没有订单记录。
目前我这边想到的方法是使用表连接后查询订单表order然后groupby 统计订单数,查询的结果如下
const userDBModel = require('./db/user');
const orderDBModel = require('./db/order');
const Sequelize = require('sequelize');
const Op = Sequelize.Op;
orderDBModel.belongsTo(userDBModel, {foreignKey: 'user_id', targetKey: 'id'}); // 表关联
// 查询
orderDBModel.findAll({
raw: true,
include: [userDBModel],
attributes: [
[Sequelize.col('user.id'), 'id'],
[Sequelize.col('user.name'), 'name'],
[Sequelize.fn('COUNT'), 'count']
],
group: 'user.id',
}).then((result) => {
console.log(result, 'result');
resolve(result);
}).catch((error) => {
reject(new ApiError(error, 500));
});
查询结果未出现王五
的数据,这种如何将未出现在订单表的用户数据查询并补0
呢?
id name count
1 张三 3
2 李四 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查询文档后发现可以直接在
attributes
里面写sql
语句。这个应该是查询user表然后统计 订单数。不用链接表啥的,我想多了,还需要多使用sql.哈哈
参考链接api Sub Queries