我试图用鹅毛笔要达到什么下面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
现在我有这个在我的奎尔版本:
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])并获取Book?
您是否试过flatMap而不是地图?我不确定这一点,但只是猜测 – sparkr
我认为是这样,但我不记得结果是什么,我正在与这个查询打了很长时间,我会在今天晚些时候再次回来,让你知道。 –