2011-09-19 4 views
1

테이블이 거의 없으므로 단순화를 위해 2라고 말할 수 있습니다. 나는scalaquery 값을 검색하십시오.

... 
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'TABLEA와 값에서 'A'TableB의에서 '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) 

내가 코드를 테스트하지 않았다. 내 문제는 결과에서 데이터를 검색 할 수 없다는 것입니다.

질문을 이해하려면 열차와 열차를 타십시오. 당신은 오후 12시 이후에 열차를 검색하고 열차의 결과 안에 열차 이름과 열차가 목록으로 포함 된 결과 세트가 필요합니다.

답변

1

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) 

list2multimap이 https://stackoverflow.com/a/7210191/66686

코드는 IDE, 컴파일러 또는 유사한의 도움없이 기록에서 가져옵니다. 디버깅 무료 교육을 고려하십시오 :-)

관련 문제