0

2 つのドメイン クラスがあります。

class User {
    String nickname
}

class Episodes {
    String name
    User sentBy
}

誰がより多くのエピソードを送信したかについてランキングを作成したいと思います。

だから私はこのクエリを実行し、私が望む結果を与えてくれます。

SELECT user.nickname, count(episodes.id) total
FROM user
JOIN episodes on user.id = episodes.sent_by
GROUP BY user.nickname
ORDER BY total DESC

コントローラーでこのクエリを実行する最良の方法は何ですか? どのように?

4

2 に答える 2

0

これには HQL を使用します。

def results = User.executeQuery(
   'SELECT e.sentBy.nickname, count(e) as total ' +
   'FROM Episodes e ' +
   'GROUP BY e.sentBy.nickname ' +
   'ORDER BY total desc')

結果は Object[] 配列のリストになります。最初の要素はニックネームで、2 番目の要素はカウントです。

for (Object[] row in results) {
   println "User ${row[0]} has ${row[1]} episodes"

}

于 2012-12-14T06:44:11.813 に答える
0

あなたの懸念について回答された質問があります:

Grails Criteria での groupProperty と countDistinct の使用

于 2012-12-14T09:16:44.370 に答える