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列はTalk のid列への外部キーです

トーク モデル:

  • ID
  • 説明
  • Speaker_id
  • 誓約日
  • create_date_time
  • locked_date
  • is_approved

投票モデル:

  • ユーザー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 に答える