5 Ekim 2015 Pazartesi

SQL Join Tipleri

Not : Join'lerin nasıl çalıştığını anlamak için Visual Representation of SQL Joins çok iyi bir kaynak.

Kartezyen Çarpım - Cartesian Product
Join'lerden önce kartezyen çarpımı bilmek gerekiyor. Cartesian kelimesi sanırım Rene Descartes'in soyadı ile ilgili bir kelime.
Kabaca bir tablodaki tüm satırların diğer tablodaki tüm satırlar ile yanyana koyulması şekilnde düşünülebilir.

left_01
, 1 left_02, 1 right_01, 1 right_02, 1 right_03, 1 left_01 joins to right_01 using key 1 left_01 joins to right_02 using key 1 left_01 joins to right_03 using key 1 left_02 joins to right_01 using key 1 left_02 joins to right_02 using key 1 left_02 joins to right_03 using key 1

Aslında kartezyen çarpımın kombinasyon ile aynı şey olduğu görülebilir. İç içe döngülerden ibarettir.
IEnumerable<string> basket1 = new List<string> {...};
IEnumerable<string> basket2 = new List<string> {...};
IEnumerable<string> basket3 = new List<string> {...};

foreach (var item1 in basket1)
foreach (var item2 in basket2)
foreach (var item3 in basket3)
{
 Console.WriteLine("{0}, {1}, {2}", item1, item2, item3);
}

Many to Many (M:M) İlişki
M:M ilişki için en az 3 tane tablo gerekir. Car, Property isimli iki tablo olsun. CarProperty isimli bir ara tablo ile iki tablo birbirine bağlanır.

Inner Join - A ve B'nin kesişimi
Inner Join yazısına taşıdım

Left Outer Join - A + A ve B Kesişimi
Örnek
select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4
Full Outer Join - A + B
Örnek
select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5





Hiç yorum yok:

Yorum Gönder