我正在尝试在sequelize(SQL Server和SQLite)中创建一个连接查询,这是我到目前为止所拥有的:
db.Job.findAll({
attributes: [
'title',
'id',
[fn('SUM', literal('CASE WHEN JobResponses.result = "true" THEN 1 ELSE 0 END', 'T')), 'True'],
[fn('SUM', literal('CASE WHEN JobResponses.result = "false" THEN 1 ELSE 0 END', 'F')), 'False'],
[fn('SUM', literal('CASE WHEN JobResponses.result IS NULL OR JobResponses.result NOT IN ("true", "false") THEN 1 ELSE 0 END', 'Incomplete')), 'Incomplete']
],
include: [
{ model: db.JobResponse, as: 'JobResponses' },
],
where: where,
group: ['Job.id', 'Job.title'],
})
我希望聚合只能在特定日期范围内的作业响应上运行,所以我这样做是为了对象:
where['JobResponses.createdAt'] = {
$lt: end,
$gt: start
}
然而,这引发了问题:
错误:SQLITE_ERROR:没有这样的列:Job.JobResponses.createdAt
如何使用sequelize在where对象中指定外部模型上的列?
答案 0 :(得分:0)
如果您想指定联接表的位置,您可以这样做:
db.Job.findAll({
include: [
{
model: db.JobResponse,
as: 'JobResponses',
where:{
$and:[{createdAt:{$lt:end}},{createdAt:{$gt:start}}]
}
}
]
})