Node.js 为Sequlize.js中连接/包含的实体上的嵌套和/或表达式生成SQL
我一辈子都不知道如何使用Sequelize.js为不同的字段集生成和/或SQL。给定下表(见下文),如何使用sequelize.js生成下面的SQLNode.js 为Sequlize.js中连接/包含的实体上的嵌套和/或表达式生成SQL,node.js,sequelize.js,Node.js,Sequelize.js,我一辈子都不知道如何使用Sequelize.js为不同的字段集生成和/或SQL。给定下表(见下文),如何使用sequelize.js生成下面的SQL SELECT * FROM FactTable1 JOIN DimTable1 ON FactTable1.FKey_DimTable1 = DimTable1.Id JOIN DimTable2 ON FactTable1.FKey_DimTable2 = DimTable2.Id //Important Part!
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')
事实表1
- 身份证
- 事实1
- 事实2
- FKey_DIMTABLE 1
- FKey_DimTable2
- 身份证
- Dim1
- 身份证
- Dim2
提前谢谢 Sequelize有一个功能,如所述,该功能允许父Where子句引用连接(包括)实体的属性。上面的查询由下面的JSON提供服务
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'
}
]
});