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 に答える