Scala 在Slick中为joinLeft添加两个条件

Scala 在Slick中为joinLeft添加两个条件,scala,slick,slick-3.0,Scala,Slick,Slick 3.0,这包括: val table1 = TableQuery[Table1] val table2 = TableQuery[Table2] val query = for { (t1, t2) <- table1 joinLeft table2 on (_.dsType === _.dsType) } yield (t1, t2) val table1=TableQuery[table1] val table2=TableQuery[table2] val que

这包括:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

  val query = for {
    (t1, t2) <- table1 joinLeft table2 on (_.dsType === _.dsType)
  } yield (t1, t2)
val table1=TableQuery[table1]
val table2=TableQuery[table2]
val query=for{

(t1,t2)您可以指定在on中向哪个表请求属性,并由运算符&&&分隔:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

    val query = for {
      (t1, t2) <- table1.joinLeft(table2).on((tab1, tab2) => tab1.dsType === tab2.dsType && tab1.dsSk === tab2.dsSk)
    } yield (t1, t2)
val table1=TableQuery[table1]
val table2=TableQuery[table2]
val query=for{
(t1,t2)tab1.dsType==tab2.dsType&&tab1.dsSk==tab2.dsSk)
}产量(t1,t2)
与此类似的问题在以下章节中得到了回答:

您可以指定在on中向哪个表请求属性,并由运算符(&&)分隔:

  val table1 = TableQuery[Table1]
  val table2 = TableQuery[Table2]

    val query = for {
      (t1, t2) <- table1.joinLeft(table2).on((tab1, tab2) => tab1.dsType === tab2.dsType && tab1.dsSk === tab2.dsSk)
    } yield (t1, t2)
val table1=TableQuery[table1]
val table2=TableQuery[table2]
val query=for{
(t1,t2)tab1.dsType==tab2.dsType&&tab1.dsSk==tab2.dsSk)
}产量(t1,t2)
与此类似的问题在以下章节中得到了回答:

匿名函数中的四个下划线表示它应该包含四个参数,每个第n个参数对应于第n个下划线。但是
上的
需要一个包含两个参数的函数。匿名函数中的四个下划线表示它应该包含四个参数,每个第n个参数对应于第n个下划线。但是
on
需要一个包含两个参数的函数。