1

テーブルはほとんどありません。簡単にするために 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")
}

tableA から値 'a' を取得し、tableB から値 '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)

コードをテストしていないため、コードにエラーがある可能性があります。私の問題は、結果からデータを取得できないことです。

質問を理解するには、電車に乗ったり、そのクラスに参加したりしてください。午後 12 時以降の列車を検索し、列車の結果内のリストとして列車名と列車が持つクラスの結果セットが必要です。

4

1 に答える 1

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、コンパイラなどの支援なしで記述されています。デバッグの無料トレーニングを検討してください:-)

于 2012-08-26T20:11:40.270 に答える