2016-10-16 5 views
1

jooqでこのステートメントと同等の効果を得る方法を教えてください。jooqの複数のフィールドでgroup_concatに相当するmysqlを実行するには?

select course.course_id, 
     group_concat(course_user.user_id, ":", course_user.current_state) 
from course 
left join course_user 
on course.course_id = course_user.course_id 
group by course.course_id; 

MySQLで上記の結果は、どのように我々はjooqでこれを達成することができます

1 58:COMPLETED,11908:ASSIGNED,11919:COMPLETED,11920:ASSIGNED 
2 11913:PENDING_APPROVAL,11919:COMPLETED,11921:COMPLETED 

のようなものでしょうか? jooqのgroupConcatは、Fieldパラメータを1つだけ取るか、1つのFieldと1つのセパレータ文字列を取ります。

答えて

2

私は、このように連結上groupConcatを使用して、それを解決 -

DSL.groupConcatDistinct(DSL.concat(COURSE_USER.USER_ID, DSL.val(":"), COURSE_USER.CURRENT_STATE)) 

を何らかの理由で、私は明確な使用していない場合、私は2つの値としてすべてのエントリを取得します。おそらくそれはconcatのためにそしてグループの連結のためにもう一度実行するでしょうか?これが当てはまる場合は、確かに効率が悪いです。私がより良いアプローチを見つけ出すまで、またはここで誰かが私によりよいアプローチを与えることができるならば、私はこれに固執するでしょう。

関連する問題