scala - 光滑的多个连接

标签 scala slick

对于两个表之间的联接完成

    (for {
    (computer, company) <- Computers leftJoin Companies on (_.companyId === _.id)
    if computer.name.toLowerCase like filter.toLowerCase()
    }

但是,如果需要在更多表之间进行联接,下面尝试的正确方法是什么,但是不起作用
   (for {
    (computer, company,suppliers) <- Computers leftJoin Companies on (_.companyId ===        _.id)
     //not right leftjoin Suppliers on (_.suppId === _.id)
    if computer.name.toLowerCase like filter.toLowerCase()
  }

最佳答案

第一个联接导致查询返回元组。元组组件之一具有要用于第二个联接的外键。您需要先在第二个连接条件中获取此组件,然后才能获取其字段。如果公司是表,则具有字段suppId,它将看起来像这样:

(for {
  ((computer, company),suppliers) <- Computers leftJoin Companies on (_.companyId === _.id) leftJoin Suppliers on (_._2.suppId === _.id)
  if computer.name.toLowerCase like filter.toLowerCase()
} yield ... )

关于scala - 光滑的多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537925/

相关文章:

scala - 为什么 VectorBuilder 位于 scala.collections.immutable 包中?

scala - 使用 SBT 制作 Spark Fat Jar 的正确方法

scala - 如何在 Scala Slick 查询中否定 "inSet"?

scala - Slick:autoInc 在 MultiDBCakeExample 示例中是如何工作的?

scala - 与SLICK中的伴随对象映射的投影

sql - 在 Slick 中选择许多任意列

string - 将字符串中的数字提取到 Scala 中的列表中

scala - 创建 RDD[LabeledPoint] : java. lang.ClassCastException : java. lang.Long 不能转换为 java.lang.Double

scala - 断言值的简洁方法与 ScalaTest 中的给定模式匹配

scala - 尝试连接到 MySql 时出现光滑异常