たとえば、次のテーブル定義があります。
object Houses extends Table[Long]("Houses") {
def id = column[Long]("id")
def * = id
}
object Rooms extends Table[(Long, Long)]("Rooms") {
def id = column[Long]("id")
def houseId = column[Long]("houseId")
def size = column[Int]("size")
def * = id ~ houseId ~ size
}
そして、家ごとに一番大きな部屋を選びたいです。
私は次のトリックを思いつきました:
val query = {
(r1, r2) <- Rooms leftJoin Rooms on ((r1,r2) =>
r1.houseId === r2.houseId && r1.size > r2.size
)
if r2.id.isNull
} yield r1
それは私が必要とすることをしますが、見苦しく、まったく読めず、パフォーマンスが低下しているようです。クエリで使用しようとしgroupBy
ましたが、いくつかのコアコンセプトを誤解しているようです-型を正しく取得できません。
Slick でこのような集計クエリを実行するより良い方法はありますか?