【发布时间】:2019-05-16 11:17:33
【问题描述】:
我在 Sequelize.js 中是个菜鸟,在 Angular 中稍微少一些,但必须解决一个问题,我想使用子查询作为 JOIN 的条件。我在下面粘贴了一些示例,因为代码比文字更能说明问题。
SQL
INNER JOIN table ON table.key IN(SELECT current_key FROM historysnake WHERE original_key IN(
SELECT original_key FROM historysnake WHERE current_key = table.key)
AND historysnake.model = 'tablename')
问题是:如何将上述查询放入 Sequelize 对象?比如:
Sequelize.js
var foo = sequelize.define('foo', {...}, {
classMethods: {
associate: function(models) {
foo.hasMany(...)
}
}
});
【问题讨论】:
-
您应该能够通过自加入关联来执行此操作,例如您将包含在
table.findAll中的HistorySnake.hasOne(HistorySnake, ....);。但是,您的 SQL 令人困惑:看起来 historySnake 的第二遍总是与第一遍匹配。你能详细说明一下吗? -
我将详细说明。我正在开发一个应用程序,护理人员可以在其中注册有关患者的信息。如果有人注册了一个事件,然后想要编辑该注册,则原始注册将被历史记录并创建一个新注册。所有这些注册都通过 Historysnake 与 current_key、previous_key 和 original_key 链接在一起。因此获取“蛇”的查询。
标签: javascript mysql sequelize.js