【发布时间】:2017-12-18 08:51:04
【问题描述】:
我正在尝试使用 Quill 实现以下 PostgreSQL 查询的功能:
select books.*, array_agg(authors.name) from books
join authors_books on(books.id = authors_books.book_id)
join authors on(authors.id = authors_books.author_id)
group by books.id
现在我的 Quill 版本中有这个:
val books = quote(querySchema[Book]("books"))
val authorsBooks = quote(querySchema[AuthorBook]("authors_books"))
val authors = quote(querySchema[Author]("authors"))
val q: db.Quoted[db.Query[(db.Query[Book], Seq[String])]] = quote{
books
.join(authorsBooks).on(_.id == _.book_id)
.join(authors).on(_._2.author_id == _.id)
.groupBy(_._1._1.id)
.map {
case (bId, q) => {
(q.map(_._1._1), unquote(q.map(_._2.name).arrayAgg))
}
}
}
如何摆脱结果中的嵌套查询 (db.Query[Book]) 并获得一本书?
【问题讨论】:
-
您是否尝试过使用 flatMap 而不是地图?我不确定,只是猜测
-
我想是这样,但我不记得结果是什么,我与这个查询斗争了很长时间,今天晚些时候我会再回来告诉你。跨度>
标签: postgresql scala quill.io