我总结了两个不同数据库表中的总数:
val sum1Query: Rep[Int] = tableQuery1.map(_.amount).sum.ifNull(0)
val sum2Query: Rep[Int] = tableQuery2.map(_.amount).sum.ifNull(0)
for {
sum1 <- sum1Query.result
sum2 <- sum2Query.result
} yield {
sum1 + sum2
}
每次调用.result
时,它将对数据库运行2个SQL查询。我正在寻找一种使其仅使用一个SQL查询的方法。
类似的事情不起作用:
for {
sum1 <- sum1Query
sum2 <- sum2Query
} yield {
sum1 + sum2
}.result
除了使用普通的SQL查询以外,还有其他关于在Slick中执行此操作的想法吗?
每次调用.result
都会创建一个DBIO
操作,它是一个SQL语句。减少操作数量的技巧是找到一种方法,将两个查询(或两个Rep
)组合在一起成为一个操作。
根据您的情况,您可以压缩两个查询: