如何以最精确,最佳的方式将此sql语句转换为Slick。
select t.*, count(v.userId) as vote from Talk t inner join Vote v on t.id = v.talkId group by t.id
v。 talkId 列是Talk的外键到 id 列
谈话模式:
投票模型:
我尝试了这个,但它抛出了异常 SlickException:无法在Ref s3中选择Path s2
val x = for {
t <- models.slick.Talks
v <- models.slick.Votes if t.id === v.talkId
} yield (t, Query(models.slick.Votes).filter(_.talkId === t.id).length)
val y = x.groupBy(_._1.id)
答案 0 :(得分:2)
val x = (for {
t <- models.slick.Talks
v <- models.slick.Votes if t.id === v.talkId
} yield (t, v)).groupBy(_._1).map{ case (t,tvs) => (t,tvs.map(_._2).length) }