4

我有可以分配许多类别的帖子。所以它是一个多对多的关系。

我想计算每个类别中有多少帖子(符合特定标准),然后对结果进行排序。

我有:

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”。我不知道如何解决这个问题。

4

1 回答 1

0

我还没有提出解决方案,但我确实有一个解决方法。

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

我不是按别名排序,而是按列号排序。这似乎有效。我对此不高兴。但它有效。

于 2013-01-23T03:57:40.510 回答