2013-07-10 6 views
10

This section of Slick's documentation pageは非常に奇妙です。ジップジョインとは何ですか?あなたはこれを聞いたことがありますか、ペアワイズ・ジョインですか?

このジップジョインとは何ですか?それが意味することを言う:。

をペアごとに2つのクエリ

が、何それは@手段の参加@私は、私が参加し、両方の「ジップのためにグーグルで試した

を知りません"と"ペアワイズジョイン "...データベースとは関係ない結果が出ます。

Iやる私も「ペアワイズ」で検索したときに...ウィキペディアからthisを取得


誰かが私にジップとの違い参加し、通常の外側や内側の参加を示すいくつかの例を挙げてもらえますか?ありがとう!

+0

正式なアイデアはありませんが、クエリAの最初の行に移動します。 – Randy

+0

ジッパーについて考えるのに同意します。結合されたセット内のデータの順序は重要です。したがって、第1行から第1行第2行から第2行など**結果の圧縮クエリは、行番号関数を使用してSQLで表すことができるため、zipWithIndexはプリミティブ演算子:**ジッパーのコンセプトがスポットであり、セットの順序が非常に重要であることを意味します – xQbert

+0

「並べ替えマージ結合」を意味する可能性があります:http://use-the-index-luke.com/sql/ join/sort-merge-join –

答えて

14

ジップ結合は、順序付きセットについて話すときにのみ意味があります。列の値に基づいて結合するのではなく、行番号に基づいて結合します。のみ一致する行

[λ] [color] [flame] [element] 
475 blue  blue  indium 
510 green green boron 
570 yellow yellow sodium 
650 red  red  calcium 

表1 OUTER表2をJOIN:

表1

[λ] [color] 
400 violet 
415 indigo 
475 blue 
510 green 
570 yellow 
590 orange 
650 red  

表2

[flame] [element] 
green boron 
yellow sodium 
white magnesium 
red  calcium 
blue  indium 

表1 INNERは、表2の[カラー] = [火炎]がJOIN ON [色] = [炎]:すべての行、可能であれば

[λ] [color] [flame] [element] 
400 violet NULL  NULL 
415 indigo NULL  NULL 
475 blue  blue  indium 
510 green green boron 
570 yellow yellow sodium 
590 orange NULL  NULL 
650 red  red  calcium 
NULL NULL  white magnesium 

マッチ表1表2に「ジップは接合された」:すべての行を、関係なく一致の

[λ] [color] [flame] [element] 
400 violet green boron 
415 indigo yellow sodium 
475 blue  white magnesium 
510 green red  calcium 
570 yellow blue  indium 
590 orange NULL  NULL 
650 red  NULL  NULL 

ファスナーは、ファスナーのようなデータを結合するペアリングされているジョイン1つ目のテーブルの最初の行は他のテーブルの最初の行、2番目のテーブルは2番目のテーブルなどとペアになっています。それらは非常に迅速に生成することができますが、データに意味のある順序が既に存在する場合やランダムなペアリングを生成したい場合以外は意味がありません。

+0

良い説明。 Slickのzipメソッドは、http://www.scala-lang.org/api/current/index.html#[email protected][B](GenIterable[B]):Iterable[(A,B)に対応しています。 ]は、 "この反復可能なコレクションから形成された反復可能なコレクションと、対応する要素を組み合わせて組み合わせたもう1つの反復可能なコレクションを返します。" – cvogt

+0

ありがとうございます! – Meredith

+1

どのように実装されていますか?どのようなSQLが生成されますか? – nafg

関連する問題