2017-01-26 33 views
0

私は後続のクエリがsequelizeを使用して実行されるようにするシナリオがあります。サブクエリー同じテーブル:Sequelize

select * from master where catg_level = 1およびobj_id in(masterからのobj_idはcatg_level = 2)を順番に並べます。

私は以下のコードを続編で書いています。

Master.all({ 
    where: {catg_level: '1'}, 
    order: 'position ASC', 
    include: [{ 
    model: Master, 
    as: 'sub-menu', 
    where: {catg_level: '2'} 
    }] 
}) 
.then(function(a){ 
    try { 
    console.log(JSON.stringify(a)); 
    } catch (e) { 
    console.log(e); 
    } 
}); 

SQLこの

enter image description here

発生= 2条件catg_level代わりにサブクエリとして追加された主クエリに追加されます。私はこれが実際の機能だと理解しています。しかし、これを行うための回避策はありますか?お知らせ下さい。

ありがとうございます。

答えて

0

あなたはsequelize.literalを使用することができます。

{ 
    where: { 
     catg_level: '1', 
     obj_id:{ 
      in:[sequelize.literal('(select obj_id from master where catg_level = 2)')] 
     } 
    }, 
    order: 'position ASC', 
} 
+0

私は、好ましくは、パフォーマンス上の理由から直接クエリを使用したくないでしょう。このための回避策はありますか? –

関連する問題