groupBy の「グループ」部分から要素を選択する好ましい方法は何ですか? (groupBy は [キー -> グループ] 関係になります)。可能であれば、1 つのデータベース ヒット、または少なくとも一定量のヒットが発生するはずです。
例として、Locations(id) テーブルと Companies(id, locationId,foundDate) テーブルがあるとします。各場所で最も古い会社を見つけるにはどうすればよいでしょうか?
私はこのようにしたでしょう:
Locations.join(Companies).on(_.id === _.locationId).groupBy(_._1).flatMap {
case (location, companies) =>
companies.map(_._2).sortBy(_.foundedDate).take(1).map {
company => (location, company)
}
}
しかし、これは実行時例外を生成します:
scala.slick.SlickException: Unsupported query shape containing .groupBy without subsequent .map
at scala.slick.compiler.FuseComprehensions.fuse(Relational.scala:200)
...