簡體   English   中英

使用Sequelize.js創建JOIN WHERE鍵IN(SELECT鍵FROM ...)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM