1 Ekim 2010 Cuma

Inner Join ve Outer Join

1-      Inner Join
 
Tablo birleştirmek için kullanılan yöntemdir. Her iki tabloda da eşleşen ortak alanların
olması gerekir.

 

Birleştirme işlemi sadece iki tablo için kısıtlı değildir. En fazla 256 adet tabloyu JOIN
işlemine tabi tutabiliriniz.

SELECT Adi,Soyadi,VermeTarihi,VermeSuresi
FROM Uye U JOIN Odunc O
ON U.UyeNo=O.UyeNo

2-      Outer Join
 
Inner Join, iki veya daha fazla tablodaki ilişkili bulunan satırları listelerken Outer Join,
tabloda ilişkili olmayan satırları da gösterecektir.

Yani tablodaki tüm satırlar gösterilecektir. Ancak, ilişkisi olmayan satırlarda
değer NULL olarak gösterilir.

 
Kullanışlarına göre Join-Tipi farklılık göstermektedir. 3 tip Join-Tipi vardır.

A)   LEFT OUTER JOIN: Bu kelimenin solundaki tablo, belirleyici tablodur ve bu
kullanım, bir ilişkisi bulunsun veya bulunmasın birinci tablodaki bütün satırları
listeleyecektir. İkinci tabloda ise ilişkili satırlar listelenecektir. Eğer bir ilişki
bulunmuyorsa sağdaki tablo verileri NULL olarak gösterilir.

SELECT Uye.*,Odunc.*
FROM Uye U LEFT JOIN Odunc O
ON U.UyeNo=O.UyeNo


B)   RIGHT OUTER JOIN: Bu kelimenin sağındaki tablo belirleyici tablodur ve
bu kullanım bir ilişkiye ait olsun veya olmasın ikinci tablodaki bütün satırları
gösterecektir. Birinci tabloda ise ilişkili satırlar listelenecektir. Eğer bir ilişki
bulunmuyorsa soldaki tablo verileri NULL olarak listelenir.
 
SELECT Adi,Soyadi,VermeTarihi,VermeSuresi
FROM Uye U RIGHT JOIN Odunc O
ON U.UyeNo=O.UyeNo
  

C)   FULL OUTER JOIN: Left ve Right Outer Join’de karşılıklı olarak eşit satırı
olmayan satırlar da listelenir. FULL OUTER JOIN, LEFT ve RIGHT OUTER
JOIN’in birleşim kümesidir.

SELECT Adi,Soyadi,VermeTarihi,VermeSuresi
FROM Uye U  FULL JOIN Odunc O
ON U.UyeNo=O.UyeNo

3-      Cross Join

Her iki tabloyu çapraz olarak birleştirir. Yani, ilk tablodaki her bir satır için ikinci tablodaki her satır sonuç olarak döner.

Örneğin; A ve B tablosu oluşturalım. A' ya sayı değerler, B' ye ise harf değerleri girelim ve Cross Join olarak birleştirelim.
                                     

CREATE TABLE A(Numara int)
INSERT INTO A(Numara)
VALUES (1),(2),(3)

CREATE TABLE B(Harfler varchar(4))
INSERT INTO B(Harfler)
VALUES ('a'),('b'),('c'),('d')

SELECT *
FROM A CROSS JOIN B


Hiç yorum yok:

Yorum Gönder