Coldfusion Form以多对多计数

Coldfusion Form以多对多计数,orm,coldfusion,many-to-many,hql,coldfusion-9,Orm,Coldfusion,Many To Many,Hql,Coldfusion 9,我有可以分配到许多类别的职位。所以这是一种多对多的关系 我想统计每个类别中符合特定标准的帖子数量,然后对结果进行排序 我有: Select ( Select count(post.id) From post Join category as postcat where postcat.id = category.id and (post.deleted is null or post.deleted = false)

我有可以分配到许多类别的职位。所以这是一种多对多的关系

我想统计每个类别中符合特定标准的帖子数量,然后对结果进行排序

我有:

Select ( Select count(post.id)
         From post
         Join category as postcat
         where postcat.id = category.id
         and (post.deleted is null or post.deleted = false)
         and ...
       ), category
From category
order by ????? DESC, category.name
我想按计数列排序。但我不能在上面声明别名。它只是忽略了我添加的任何别名。然后抛出一个sql错误,说明:

java.sql.SQLSyntaxErrorException:[Macromedia][SQLServer JDBC 驱动程序][SQLServer]列名“numPosts”无效

这就是我所尝试的:

         ...
         and (post.deleted is null or post.deleted = false)
         and ...
       ) as numPosts, category
From category
order by numPosts DESC, category.name

我检查了HQL运行时日志,没有在计数上设置'as numPosts'。我不知道如何解决这个问题。

我还没有想出解决办法,但我确实有一个解决办法

SELECT (SELECT count(post.id)
    FROM post
    JOIN post.category postCategory
    WHERE postCategory.id = category.id
    AND (post.deleted IS NULL OR post.deleted = <cfqueryparam value="#false#">)
    ), category
FROM category
order by 1 desc, category.name
我不是按别名排序,而是按列号排序。这似乎有效。我对此不高兴。但是它是有效的。

我已经看到了:但是我认为它没有关系,因为HQL在主要部分根本没有呈现别名。因此,它在任何地方都不会起作用,而不仅仅是在order by。问题已被标记为已修复