2013-07-10 15 views
10

This section of Slick's documentation page oldukça gariptir.Zip birleştirme nedir? Bunu hiç duydunuz mu, yoksa ikili bir katılım mı?

Bu zip birleştirmesi nedir? O anlamına geldiğini söylüyor:

ikili gruplar o @ ne anlama geldiğini iki sorgular

ait katılmak ama @ Ben denedim

bilmiyorum hem "zip katılmak için Googling. "ve" çift olarak birleştir "... ancak veritabanlarıyla ilgisi yoktur.

İşim olsa "BÜKÜMÜ" arama yaptığında ... Wikipedia'dan this olsun


biri bana bir zip arasındaki farklılıkları birleştirmek ve normal dış veya iç birleşim gösteren bazı örnekler verebilir misiniz? Teşekkürler!

+0

resmi bir fikir değil - ancak bu ilk satırın bana ima ettiği anlamına gelir. A sorgusu, B sorgusunun ilk satırı ile gider. – Randy

+0

Bir fermuar hakkında düşünmeye katılıyorum. birleştirilen kümelerdeki veri sırası önemlidir, böylece 1. sıradan 1. sıraya 2. sıradan 2. sıraya vb. ** Sonuçta elde edilen sıkıştırılmış sorgu, SQL'de bir satır numarası işlevi kullanılarak temsil edilebilir, bu nedenle zipWithIndex, aşağıdaki gibi desteklenir: ilkel bir operatör: ** fermuar konseptinin spot olduğunu ve setlerin sırasının ÇOK önemli olduğunu ima ediyor – xQbert

+0

Belki "Sort Merge Join" anlamına geliyor: http://use-the-index-luke.com/sql/ join/sort-merge-join –

cevap

14

Zip birleştirmeler yalnızca sipariş kümeleri hakkında konuşurken anlamlı olur. Bir sütunun değerine bağlı olarak katılmak yerine, satır numarasına göre katılıyorsunuz. sadece eşleşen satırları

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

Tablo1 DIŞ Table2 KATILDIĞI

Tablo 1.

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

Tablo 2

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

Tablo1 İÇ Tablo 2 AÇIK [renkli] = [alev] artır AÇIK [renk] = [alev]:

[λ] [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 

Tablo1 Table2 için "zip katıldı" mümkünse tüm satırları, eşleşmiş: Tüm satırlar bakılmaksızın

[λ] [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 

Zip eşleştirme, bir fermuar gibi verilerle birleştirerek birleşimler maçın Birinciden ilk sıradaki bir satırdan ilk satır, ikinci saniye ile eşleştirilir, vb. Aslında bu verilere bakmaz. Çok hızlı bir şekilde üretilebilirler, ancak verilerinizde halihazırda var olan bazı anlamlı düzenler yoksa ya da sadece rastgele eşleştirmeler oluşturmak istiyorsanız

+0

Güzel açıklama. Slick'in zip yöntemi, http://www.scala-lang.org/api/current/index.html#[email protected][B](GenIterable[B]):Iterable[(A,B'ye karşılık gelmektedir. ] "Bu yinelenen koleksiyondan oluşturulmuş yinelenebilir bir koleksiyonu ve karşılık gelen öğeleri çiftler halinde birleştirerek başka bir yinelenen koleksiyon oluşturur." – cvogt

+0

Çok teşekkür ederim! – Meredith

+1

Nasıl uygulanır?Hangi SQL oluşturulur? – nafg

İlgili konular