【问题标题】:Sequelize with join, group by, having, order bySequelize with join, group by, having, order by
【发布时间】:2014-01-30 04:37:28
【问题描述】:

如何使用 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

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    试试这个:

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

    通过这个问题阅读my research

    我使用 sequelize@2.0.0-dev9

    【讨论】:

      【解决方案2】:

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

      这里是这个案例的相关文档: http://docs.sequelizejs.com/manual/tutorial/raw-queries.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-20
        • 2014-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多