Bla*_*ack 5 sql-server node.js sequelize.js
我正在尝试在Express应用程序中使用Sequelize获取数据,并且使用SQL Server作为数据库。
这是我的代码:
Order.findAll({
    attributes:[
        [Sequelize.fn('SUM', Sequelize.col('total_price')), 'total_price'],
    ],
    include:[
        {model: Customer, attributes:['name']}
    ],
    group:['Customer.id','Customer.name']
}).then(result =>res.json(result))
这段代码运行良好,并成功使用聚合函数返回数据。但是当我添加另一个'product_id', 'status', 'expired_date'不需要聚合的属性时,它会返回一个错误,例如
列“Customer.product_id”在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。
根据这篇文章,它只能获取 GROUP BY 列表中的列。
但如何获得添加的属性和聚合结果呢?喜欢:
{
     'total_price': 2000,
     'name': 'Jack',
     'status': 'Paid'
}
应该做 2 在函数中获取数据,就像首先获取聚合,然后获取另一个数据。我担心有可能返回不相关的数据。
我刚刚找到了一种方法来做到这一点,我只添加了我想要进入group_by子句的属性/列。像这样:
Order.findAll({
attributes:[
    'product_id', 'status', 'expired_date',
    [Sequelize.fn('SUM', Sequelize.col('total_price')), 'total_price'],
],
include:[
    {model: Customer, attributes:['name']}
],
group:['Customer.id','Customer.name','Order.product_id', 'Order.status', 'Order.expired_date']
}).then(result =>res.json(result))
它成功返回了我的预期结果。但不知道这样做有什么考虑吗?谢谢
| 归档时间: | 
 | 
| 查看次数: | 9923 次 | 
| 最近记录: |