Я использую Sequelize в своем экспресс-приложении. Мне нужно сгенерировать запрос с подзапросом в предложении WHERE
.
SELECT *
FROM MyTable
WHERE id NOT IN (
SELECT fkey
FROM MyOtherTable
WHERE field1 = 1
AND field2 = 2
AND field3 = 3
)
Я сначала пробовал отношения/ассоциации через свои модели, но не мог заставить его работать. Что-то вроде:
MyTable.find( {
where: {
id: {
$notIn: // <= what goes here? Can I somehow reference my include model?
}
},
include: [ {
model: MyOtherTable,
where: {
field1: 1,
field2: 2,
field3: 3
} ]
} );
Затем я попытался использовать Sequelize.where()
, вам не повезло.
Затем я попробовал Sequelize.literal()
, и это работает, но не уверен, что это "правильный" способ сделать подзапрос в предложении where в Sequelize, поскольку я новичок в нем.
MyTable.find( {
where: {
id: {
$notIn: sequelize.literal(
'( SELECT fkey ' +
'FROM MyOtherTable ' +
'WHERE field1 = ' + field1 +
' AND field2 = ' + field2 +
' AND field3 = ' + field3 +
')'
}
}
} );
Я также знаю, что я мог бы использовать Sequelize.query()
, но на самом деле не знаю, следует ли мне это сделать или если literal()
сразу, так как я чувствую, что там что-то не замечаю.
Мне бы очень хотелось знать, как выполнить подзапрос в предложении WHERE
с Sequelize "правильный" способ.
Спасибо за отзыв!