我試圖用鵝毛筆要達到什麼下面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
我認爲是這樣,但我不記得結果是什麼,我正在與這個查詢打了很長時間,我會在今天晚些時候再次回來,讓你知道。 –