【发布时间】:2015-11-10 22:04:30
【问题描述】:
我正在使用这个查询:
db.Spectrum.findAll({
attributes: ['title', [db.Sequelize.fn('SUM', db.Sequelize.col('quantity') ), 'count']],
include: [
{model: db.Varietal,
attributes : ['specID', 'id'],
include : [
{ model : db.Wine,
required: false,
attributes : ['varietal_id', 'id'],
where : {restaurant_id : restaurant_id,
owner_id : null} }
],
}
],
group : ['specID']
})
这给了我正确的结果,问题是因为它和左连接的 where 子句运行非常慢(大约 2 秒)。
左连接的原始查询如下所示。
LEFT OUTER JOIN `wines` AS `Varietals.Wines` ON `Varietals`.`id` = `Varietals.Wines`.`varietal_id` AND `Varietals.Wines`.`restaurant_id` = 16 AND `Varietals.Wines`.`owner_id` IS NULL
我希望查询具有左连接和这样的 where 子句..
LEFT OUTER JOIN `wines` AS `Varietals.Wines` ON `Varietals`.`id` = `Varietals.Wines`.`varietal_id`
WHERE `Varietals.Wines`.`restaurant_id` = 16 AND `Varietals.Wines`.`owner_id` IS NULL
但我尝试的所有操作都将“Spectrum”放在它前面,然后找不到该行。这应该怎么做?还是我只需要使用原始查询?
【问题讨论】:
标签: node.js orm sequelize.js