0

我有两个域类:

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[] 数组的列表,第一个元素是昵称,第二个是计数,例如

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

}

于 2012-12-14T06:44:11.813 回答
0

关于您的担忧,有一个已回答的问题:

在 Grails 标准中使用 groupProperty 和 countDistinct

于 2012-12-14T09:16:44.370 回答