首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Sequlize.js中联接/包含的实体上的嵌套和/或表达式生成SQL

为Sequlize.js中联接/包含的实体上的嵌套和/或表达式生成SQL
EN

Stack Overflow用户
提问于 2017-07-14 02:05:48
回答 1查看 36关注 0票数 0

在我的一生中,我无法理解如何使用Sequelize.js为不同的字段生成和/或SQL。考虑到下面的表格(见下文),如何使用sequelize.js生成下面的SQL?

代码语言:javascript
复制
SELECT * 
FROM  FactTable1
      JOIN DimTable1 ON FactTable1.FKey_DimTable1 = DimTable1.Id
      JOIN DimTable2 ON FactTable1.FKey_DimTable2 = DimTable2.Id
//Important Part! Each grouped (ie. in parenthesis) expression below referes to two different tables/aliases.
WHERE (DimTable1.Dim1 = 'Foo' AND FactTable1.Fact1 = 'Bar') OR
      (DimTable2.Dim2 = 'Baz' AND FactTable1.Fact2 = 'Bugz')

FactTable1

  • Id
  • Fact1
  • Fact2
  • FKey_DimTable1
  • FKey_DimTable2

DimTable1

  • Id
  • Dim1

DimTable2

  • Id
  • Dim2

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-15 18:33:21

Sequelize有一个被描述为最高级别的地方从句的特性,它允许父Where子句引用连接(包括)实体的属性。上面的查询使用下面的JSON提供服务。

代码语言:javascript
复制
db.FactTable1.findAll({
  where: {
    $or: [
      $and:[
        {
          '$dimtable1.Dim1$': 'Foo'
        },
        {
          Fact1: 'Bar'
        }
      ],
      $and:[
        {
          '$dimtable2.Dim2$': 'Baz'
        },
        {
          Fact2: 'Bugz'
        }
      ]
    ]
  }, 
  include: [
    { 
      model: DimTable1,
      required: true,
      as: 'dimtable1'
    },
    { 
      model: DimTable2,
      required: true,
      as: 'dimtable2'
    }
  ]
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45093478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档