を数えるには、私の二つのクラスGrailsの突起グループによって、以下の
class Users {
String emailAddress
String password
// String filename
String firstName
String lastName
Date dateCreated
Date lastUpdated
}
と
class SharedDocuments {
Users author
Users receiver
Documents file
static constraints = {
}
}
ている私は、基本的に私はすべてのユーザーの一覧を取得したい、これと同じクエリを実行したいです文書の数と一緒に、彼らは、これは私がこれまで持っているものである
SELECT author_id, COUNT(SharedDocuments.id)FROM SharedDocuments
INNER JOIN users ON author_id = users.id
GROUP BY author_id
を執筆している
def sharedDocumentsInstanceList = SharedDocuments.createCriteria().list(params){
createAlias("author","a")
eq("receiver.id",session.uid)
projections{
groupProperty "author"
count "id",'mycount'
}
order('mycount','desc')
maxResults(params.max)
}
iはcount
またはcountDistinct
を取り除く場合、私は、私は投稿者のリストを取得するが、私は何をしたいことは、文書の数と一緒に著者である、この90%の作業を持っています。だから私はcountまたはcountDistinct句をこの基準に追加すると、私はちょうど長い配列を得る!!私が欲しいもの[2,3,4]のような は、私はこれをachiveすることができ、私はすでにGrails: Projection on many tables?、 Grails criteria projections - get rows count、 Grails groupProperty and order. How it works?、 が、どれもが見てきたどのように [[author1,2]、[author2,3] ...]です答えの私の問題を解決するようだ!あなたのクエリで説明したように、あなたは、著者のIDまたは電子メールなどの他の特定のプロパティを必要としますが、結果をしたい場合は
SharedDocuments.countByAuthorAndReceiver(user, receiver)
私の結果セットに関係なく、カウントされたその他の情報はありません。あなたが私に与えたコードのsharedDocumentsInstanceListを印刷すると '[2、]'という出力が生成されます – Sap
私はちょっと同じことをやっていますが、名前付きのクエリでmaxResultsを使わないとうまく動作します。 author.idだけで作者をグループ化するとうまくいくはずです –