Scala Slick-使用多个表更新查询
我目前在scala-slick3项目中面临更新查询问题。我有一个Scala Slick-使用多个表更新查询,scala,playframework,slick,slick-3.0,Scala,Playframework,Slick,Slick 3.0,我目前在scala-slick3项目中面临更新查询问题。我有一个报告-类,它包含多个产品,每个产品包含多个部分。我想实现一个功能,将此报告中每个产品的每个部分标记为已评估 我想做这样的事情: def markProductPartsForReportAsAssessed(reportId: Int) = { val query = for { (products, parts) <- (report_product_query filter(_.reportI
报告
-类,它包含多个产品
,每个产品
包含多个部分
。我想实现一个功能,将此报告中每个产品的每个部分
标记为已评估
我想做这样的事情:
def markProductPartsForReportAsAssessed(reportId: Int) = {
val query = for {
(products, parts) <- (report_product_query filter(_.reportId === reportId)
join (part_query filter(_.isAssessed === false))
on (_.productId === _.productId))
} yield parts.isAssessed
db.run(query.update(true))
}
def markproductpartsforreportassessed(reportId:Int)={
val query=for{
(产品、零件)我想这是因为更新查询只需要一个表
UPDATE parts a SET isAccessed = 'true'
WHERE a.isAccessed = 'false' and
exists(select 'x' from products b
where a.productId = b.producId and b.reportId = reportId)
因此,您可以将与“产品”表相关的条件放入过滤器中,如下所示
val reportId = "123" // some variable
val subQuery = (reportId:Rep[String], productId:Rep[String]) =>
report_product_query.filter(r => r.report_id === reportId && r.product_id === productId)
val query = part_query.filter(p => p.isAccesssed === false:Rep[Boolean] &&
subQuery(reportId, p.productId).exists).map(_.isAccessed)
db.run(query.update(true))
我猜这是因为更新查询只需要一个表
UPDATE parts a SET isAccessed = 'true'
WHERE a.isAccessed = 'false' and
exists(select 'x' from products b
where a.productId = b.producId and b.reportId = reportId)
因此,您可以将与“产品”表相关的条件放入过滤器中,如下所示
val reportId = "123" // some variable
val subQuery = (reportId:Rep[String], productId:Rep[String]) =>
report_product_query.filter(r => r.report_id === reportId && r.product_id === productId)
val query = part_query.filter(p => p.isAccesssed === false:Rep[Boolean] &&
subQuery(reportId, p.productId).exists).map(_.isAccessed)
db.run(query.update(true))