Я пытаюсь реализовать простой запрос, который должен выглядеть следующим образом:
select * from property join entity_area on property.id=entity_area.entity_id and entity_area.area_id=1 where property.price>300000 limit 12
Довольно просто: я хочу получить объединенный результат, а затем ограничить до 12.
В Sequelize я использую следующую функцию:
return models.property.findAll(
{
where: ["price>=?", 300000],
include: [
{
model:models.entity_area,
where: { area_id:1 }
}
],
limit:12
})
Но этот код генерирует следующий sql:
select property.*, entity_area.* from (select * from property where property.price>300000 limit 12) join entity_area on property.id=entity_area.entity_id and entity_area.area_id=1
У меня совершенно другая логика из того, что я пытаюсь сделать, потому что в сгенерированном sql он сначала получает любые 12 результатов, а затем пытается присоединиться к entity_area, и, конечно, случайные 12 результатов не обязательно совпадают с entity_area, поэтому я не получаю никаких результатов.
Пожалуйста, предложите мне правильный способ сделать это. Таблица свойств очень массивная, и я должен использовать "предел", а не получать все результаты и нарезать их в javascript. Также я не хотел бы использовать необработанные запросы.