sequelize 关联查询求和

发布于 2022-09-11 19:30:10 字数 144 浏览 16 评论 0

有一张产品表,还有一张规格表,规格表里有销量字段,我怎样查出产品排序按照总销量排序。谢谢。

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月牙弯弯 2022-09-18 19:30:10

查询右查询怎么设置?

缘字诀 2022-09-18 19:30:10

sequlize要做关联查询必须两个表是有关系的

如果建立了关系
product 表

Specifications 表

如果是一对多的情况
可以通过

product.findAll({
    include:[
        {
            attributes:[
                'id',
                'name'
                [sequelize.fn('sum', Specifications.col('销量'), 'asname'],
            ]
            model:Specifications,
            order: [
                sequelize.fn('max', 'asname'),
            ]
        }
    ],
    
})

比如说我有table1,table2模型

table1

const Sequelize = require('sequelize');
const connect = require('../../db/db_tp.js');
const  table1 = connect.define('table1', {
    id: {type:Sequelize.INTEGER,primaryKey: true,autoIncrement: true},
    ustr: Sequelize.STRING(10),
    pstr:Sequelize.STRING(10),
},{
    tableName: 'table1'//指定表名
})
module.exports = table1;

table2

const Sequelize = require('sequelize');
const connect = require('../../db/db_tp.js');
const  table2 = connect.define('table2', {
    id: {type:Sequelize.INTEGER,primaryKey: true,autoIncrement: true},
    ustr: Sequelize.STRING(10),
    pstr:Sequelize.STRING(10),
},{
    tableName: 'table2'//指定表名
})
module.exports = table2;

封装table1table2的index.js

const connect = require('../../db/db_tp.js');
let table1 = require('./table1.js');
let table2 = require('./table2.js');
let table3 = require('./table3.js');

//定义关系
table1.hashMany(xxxxx);

//同步到数据库
connect.sync(xxxx);

module.exports = {
    table1,
    table2,
    table3,
}

使用的地方 route.js

let {table1,table2,table3} = require('./index')

table1.findAll({
    include:[
        {
            attributes:[
                'id',
                'name',
                [sequelize.fn('sum', sequelize.col('销量'), 'asname'],
            ],
            model:table2,
            order: [
                sequelize.fn('max', 'asname'),
            ]
        }
    ],
}).then(res=>{
    //do something
},err=>{
    //do something
})

来查询

只是做个示例,具体情况按照你的来写。
详细学习你可以看看

Sequelize 中文API文档-3. 模型(表)之间的关系/关联

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文