[英]Making a JOIN WHERE key IN(SELECT key FROM…) using Sequelize.js
我是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(...)
}
}
});
好的,這是一個例子,它假設PatientEvents的PK是所有歷史行上的original_key:
PatientEvents.hasMany(HistorySnake, {foreignKey : 'original_key'});
PatientEvents.findAll({
include: [{
model: HistorySnake,
required : true, // true = INNER JOIN but you might need outer join to see events with no history
where : { modelName : 'PatientEvents' } // as needed
}],
where: { patient_name : 'xyz' } // as needed
})
我想到了。 我不確定@ KenOn10的答案是否有效。 對於這個問題,我對這個問題太過分了,但不管怎樣,謝謝你的回答。
我最終指定了我自己的'on'子句。
models.Aim.find({
include: [{
model: models.ObjectiveReport,
required: false,
where: ['ObjectiveReports.report_entrydate >= ?', show_date],
on: {
aim_id: sequelize.literal('aim.aim_id IN(SELECT current_key FROM historysnake WHERE original_key IN(SELECT original_key FROM historysnake WHERE current_key = aim.aim_id) AND historysnake.model = "aim")')
})
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.