scalaquery检索值

scalaquery检索值,scala,scalaquery,Scala,Scalaquery,为了简单起见,我有几张桌子,比如说2张。我可以用这种方式创建它们 ... val tableA = new Table[(Int,Int)]("tableA"){ def a = column[Int]("a") def b = column[Int]("b") } val tableB = new Table[(Int,Int)]("tableB"){ def a = column[Int]("a") def b = column[Int]("b") } 我将有一个查询,从表a中检索值“a

为了简单起见,我有几张桌子,比如说2张。我可以用这种方式创建它们

...
val tableA = new Table[(Int,Int)]("tableA"){
def a = column[Int]("a")
def b = column[Int]("b")
}

val tableB = new Table[(Int,Int)]("tableB"){
def a = column[Int]("a")
def b = column[Int]("b")
}
我将有一个查询,从表a中检索值“a”,从表B中检索值“a”,作为“a”结果中的列表 我的结果应该是:

List[(a,List(b))]
到目前为止,我一直在质疑这一点

def createSecondItr(b1:NamedColumn[Int]) = for(
    b2 <- tableB if b1 === b1.b
    ) yield b2.a

val q1 = for (
a1 <- tableA
listB = createSecondItr(a1.b)
) yield (a1.a , listB)
def createSecondItr(b1:NamedColumn[Int])=for(

b2我不认为您可以在ScalaQuery中直接执行此操作。我要做的是执行正常连接,然后相应地操作结果:

import scala.collection.mutable.{HashMap, Set, MultiMap}

def list2multimap[A, B](list: List[(A, B)]) = 
  list.foldLeft(new HashMap[A, Set[B]] with MultiMap[A, B]){(acc, pair) => acc.addBinding(pair._1, pair._2)}

val q = for (
     a <- tableA
     b <- tableB
     if (a.b === b.b)
) yield (a.a, b.a)

list2multimap(q.list)
import scala.collection.mutable.{HashMap,Set,MultiMap}
def LIST2多重映射[A,B](列表:列表[(A,B)])=
list.foldLeft(新的HashMap[A,Set[B]]和MultiMap[A,B]){(acc,pair)=>acc.addBinding(pair.\u 1,pair.\u 2)}
val q=用于(

a我不认为您可以在ScalaQuery中直接执行此操作。我要做的是执行普通联接,然后相应地操作结果:

import scala.collection.mutable.{HashMap, Set, MultiMap}

def list2multimap[A, B](list: List[(A, B)]) = 
  list.foldLeft(new HashMap[A, Set[B]] with MultiMap[A, B]){(acc, pair) => acc.addBinding(pair._1, pair._2)}

val q = for (
     a <- tableA
     b <- tableB
     if (a.b === b.b)
) yield (a.a, b.a)

list2multimap(q.list)
import scala.collection.mutable.{HashMap,Set,MultiMap}
def LIST2多重映射[A,B](列表:列表[(A,B)])=
list.foldLeft(新的HashMap[A,Set[B]]和MultiMap[A,B]){(acc,pair)=>acc.addBinding(pair.\u 1,pair.\u 2)}
val q=用于(
A.