7

私は2つのテーブルを持っています:

CATEGORY (id)
POSTING (id, categoryId)

HQL または SQL クエリを作成して、投稿数が最も多い上位 10 のカテゴリを見つけようとしています。

助けていただければ幸いです。

4

4 に答える 4

6

SQLクエリ:

SELECT  c.Id, sub.POSTINGCOUNT
FROM CATEGORY c where c.Id IN
( 
    SELECT TOP 10 p.categoryId
    FROM POSTING p
    GROUP BY p.categoryId 
    order by count(1) desc
)

HQL:

Session.CreateQuery("select c.Id
        FROM CATEGORY c where c.Id IN
        ( 
            SELECT  p.categoryId
            FROM POSTING p
            GROUP BY p.categoryId 
            order by count(1) desc
        )").SetMaxResults(10).List();

http://sqlinthewild.co.za/index.php/2010/01/12/in-vs-inner-join/

于 2012-06-19T18:12:31.620 に答える
1

SQLでは、これを行うことができます:

SELECT c.Id, sub.POSTINGCOUNT
FROM CATEGORY c 
INNER JOIN 
( 
    SELECT p.categoryId, COUNT(id) AS 'POSTINGCOUNT'
    FROM POSTING p
    GROUP BY p.categoryId
) sub ON c.Id = sub.categoryId
ORDER BY POSTINGCOUNT DESC
LIMIT 10
于 2012-06-19T18:01:12.747 に答える
0

SQL は次のようになります。

SELECT c.* from CATEGORY c, (SELECT count(id) as postings_count,categoryId
FROM POSTING 
GROUP BY categoryId ORDER BY postings_count
LIMIT 10) d where c.id=d.categoryId

この出力は、Category エンティティにマップできます。

于 2012-06-19T18:17:01.973 に答える