Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala/Slick:三向联接不起作用_Scala_Slick - Fatal编程技术网

Scala/Slick:三向联接不起作用

Scala/Slick:三向联接不起作用,scala,slick,Scala,Slick,我有两个表(姓名和电话),另一个表组有效地链接了这两个表(使用外键指向姓名和电话)。我正在尝试查询姓名和电话号码,而有些姓名不需要有电话号码 val q = for { (n, (g, p)) <- names joinLeft groups on (_.id === _.nameId) join phones on (_.phoneId === _.id) // ABOVE LINE DOES NOT COMPILE !!! } yield (n, p) val q=for{

我有两个表(姓名和电话),另一个表组有效地链接了这两个表(使用外键指向姓名和电话)。我正在尝试查询姓名和电话号码,而有些姓名不需要有电话号码

val q = for {
  (n, (g, p)) <- names joinLeft groups on (_.id === _.nameId) join phones on (_.phoneId === _.id)
  // ABOVE LINE DOES NOT COMPILE !!!
} yield (n, p)
val q=for{

(n,(g,p))而不是使用
名称加入左组
。使用
名称加入电话组

val q = for {
  (n, pair) <- names joinLeft (groups join phones on (_.phoneId === _.id)) on (_.id === _._1.nameId)
} yield (n, pair)
val q=for{

(n,pair)而不是使用
名称连接左组
。使用
名称连接电话(uu.phoneId==id)
然后使用
名称连接左组

val q = for {
  (n, pair) <- names joinLeft (groups join phones on (_.phoneId === _.id)) on (_.id === _._1.nameId)
} yield (n, pair)
val q=for{

(n,pair)如果您想要一种干净的方法来实现这一点,您也可以尝试

val query = names joinLeft groups on {
    case (n, g) => n.id === g.nameId
} join phones on {
    case ((n, g), p) => n.phoneId === p.id
} map {
    case ((n, g), p) => (n, p)
}

val result = db.run(query.result)

如果您有多个表要连接,这将是一种更好的/干净的方法。:)

如果您想要一种干净的方法来连接,您也可以尝试

val query = names joinLeft groups on {
    case (n, g) => n.id === g.nameId
} join phones on {
    case ((n, g), p) => n.phoneId === p.id
} map {
    case ((n, g), p) => (n, p)
}

val result = db.run(query.result)

如果您有多个表要加入,这将是一种更好的/干净的方式。:)

由此我得到了一个错误:“value phoneId不是slick.lifted.Rep[Option[Contact.GroupTable]]”@srvy try now…添加了额外的括号您的更改是有意义的,但仍然得到了错误…[错误]
../main.scala:361:value phoneId不是slick.lifted.Rep[Option[Example.GroupTable][error](n,(g,p))@srvy您可以尝试使用
join
而不是
joinLeft
。然后看看它是否正常away@srvy发生这种情况是因为
joinLeft
与此一起,我得到以下错误:“value phoneId不是slick.lifted.Rep[Option[Contact.GroupTable]]”@srvy try now…添加了额外的括号您的更改很有意义,但仍然收到错误…[error]
../main.scala:361:value phoneId不是slick.lifted.Rep[Option[Example.GroupTable]][error](n,(g,p))@srvy您可以尝试使用
join
而不是
joinLeft
。然后看看它是否成功away@srvy这是因为
joinLeft