通过加入,分组,拥有,按顺序的续集

时间:2014-01-11 01:13:52

标签: node.js sequelize.js

如何使用ORM编写此查询?

SELECT p.id, 
    p.name, 
    COUNT(c.id) counter 
FROM Posts p 
LEFT JOIN Comments c 
    ON c.post_id = p.id 
WHERE p.rating > 100 
GROUP BY p.id
HAVING counter > 10
ORDER BY counter DESC 
LIMIT 5

2 个答案:

答案 0 :(得分:3)

试试这个:

Post.findAll({
  where: {rating: {gt: 100}},
  include: [Comments],
  having: ['COUNT(?) >= ?', '`comment`.`id`', 10]
})

通过这个问题阅读my research

我使用sequelize@2.0.0-dev9

答案 1 :(得分:0)

由于查询中存在聚合列counter,我认为此查询没有标准的ORM方法来获取实体。但Sequelize提供了运行原始SQL表达式并在您需要的任何模型中解析结果的方法。或者甚至更深,你可以自己解析响应,根据需要创建复杂的结果。

以下是此案例的相关文档: http://docs.sequelizejs.com/manual/tutorial/raw-queries.html