2011-06-24 8 views
0

gspビューに渡すモデルを作成しようとしています。私は2つのテーブルを介してサブクエリを実行したいと思います。私は2つのドメインalum_profileとalum_positionを持っています。 alum_profileには多くのalum_positionがあります。 alum_positionはalum_profileに属します。私はHQLでこれを行うにはどうすればよいビューのモデルの作成に関するヘルプ

Select count(id), 
(Select CONCAT(first_name, ' ', last_name) 
    From alum_profile 
    where 
    alum_profile_id =alum_profile.id) as Person   
FROM alum_position 
GROUP BY alum_profile_id 
ORDER BY count(id) DESC  

とGSPビューに渡すことができるモデルを作成します。私は結果セットを作成したい場合はSQLでは、私はこのような何かを持っているでしょう。あなたの助けのための

おかげ ジェイソン
私は、MySQLで、春のソースを使用して、私はあなたの質問を読んだから、Grailsの

+1

これらのテーブルのドメインクラスはありますか? –

答えて

0

にGroovyで書いています、あなたがプロフィールの名前のリストを表示したいです、各プロファイルのポジション数、ポジション数でソート、desc。

まず、あなたはモデルを必要とする:

class AlumProfile { 
    String first_name 
    String last_name 

    def hasMany = [positions: AlumPosition] 
}; 

class AlumPosition { 
    String name // I just added this, no idea what you need in here 

    def belongsTo=AlumProfile 
}; 

今、あなたは位置カウントによりソートAlumProfilesのリストを作成したいです。お使いのコントローラでは、次のものが必要です。

<g:each in="${profiles}" var="profile" > 
    ${profile.first_name} ${profile.last_name} has ${profiles.positions.size()} positions 
</g:each> 

def allByPositionCount = { 
    def profiles = AlumProfile.list().sort([compare: { a,b -> a.positions.size().compareTo(b.positions.size()) }] as Comparator); 
    [ profiles: profiles ] 
} 

これは、「プロファイル」プロファイルのリストが正しい順序であるメンバーなので、のようなものを含むモデルでallByPositionCount.gspをレンダリングします

は、必要なものをレンダリングする必要があります。

+0

メモ、これはすべてメモリからのものでしたので、より "Groovy"なタイプミスや代替の方法を考慮してください。 – billjamesdev

関連する問題