は例えば、私は、次の表の定義を持っている:Slickで集計クエリを実行するにはどうすればよいですか?
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でこのような集計クエリを実行するより良い方法はありますか?
ありがとうございます!バージョンが 'exists'のほうがはるかに高速で、行が30倍少なくなります。 – Rogach