0

如何以最精确、最佳的方式将此 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列是Talkid列的外键

谈话模型:

  • ID
  • 描述
  • 说话人ID
  • 承诺日期
  • 创建日期时间
  • 锁定日期
  • 被批准

投票模型:

  • 用户身份
  • talk_id

我试过这个但是它抛出异常SlickException: Cannot select Path s2 in Ref s3

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)
4

1 回答 1

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) }
于 2013-11-06T19:23:10.630 回答