05
“Tabloları birleştirmek…”
Posted by Zafer | Posted in SQL | Posted on 05-11-2008
SQL ‘de sorgu veya tablo sonuçlarını yatay ve düşey olarak birleştirebiliriz. Yatay birleştirmeler için JOIN ifadeleri kullanılırken ,dikey birleşimler için ise UNION deyimi kullanılır.
JOIN İfadeleri:
INNER JOIN :
İki tablo arasında birleştirme işlemi yaparken, tablolardan sadece birinde yer alan kayıt sonuçlarını görmek için kullanılır. Yani ana tabloda yer alan fakat yardımcı tabloda eşleştirmesi bulunmayan kayıtlar sorgu sonucunda gösterilmez.
OUTER JOIN :
İki tablo arasında birleştirme işlemi yaparken, tablolardan herhangi birindeki tüm kayıtları elde etmemize yarar. Üç farklı uygulanma şekli vardır. Bunlar LEFT,RIGHT,FULL şeklindedir. LEFT OUTER JOIN deyimini kullandığımızda soldaki tabloda yer alan bütün kayıtlar sağdaki tabloda eşleniği olmasa bile sorgu sonucunda elede edilir. Eğer eşleşmeyen alanlar var ise bu değerler NULL olarak gösterilir. RIGHT OUTER JOIN deyimi ile ise sağ taraftaki tabloda yer alan kayıtların tamamına ulaşılabilir. FULL OUTER JOIN deyimi ile de karşılıklı olarak iki tabloda da yer almayan kayıtlarda sorgu sonucu getirilmektedir. Yani LEFT ve RIGHT OUTER JOIN deyimleri ile elde edilen sonucun birleşiminden oluşur.
CROSS JOIN :
Bu deyim ise iki tabloda yer alan kayıtları çaprazlamak için kullanılmaktadır. Tablolarda yer alan kayıt sayılarının çarpımı kadar sonuç elde edilmektedir.
JOIN deyimlerinin genel kullanım şekli;
SELECT ..........
FROM tablo1 [INNER | OUTER | CROSS] JOIN tablo2
ON tablo1.alan=tablo2.alan
şeklindedir. JOIN deyimleri ile maksimum 256 tabloya kadar birleştirme işlemi yapabilmekteyiz.
UNION , EXCEPT , INTERSECT :
UNION :
Sorgu sonucunda iki tablonun bireleşimi dönerken her iki tabloda da yer alan bir kayıt varsa ve bu kayıt birden fazla kez tekrar ediyosa ,UNION deyimi ile kayıt sorgu içinde sadece bir kez geçer. Eğer küme işlemini örnek vericek olursak iki kümenin birleşimi olarak değerlendirebiliriz. UNION yerine UNION ALL deyimi kullanıldığı takdirde ise tekrar eden kayıtlar sorgu içinde yer alacaktır.
INTERSECT :
Bu deyim ile her iki sorguda yer alan ve koşulu sağlayan (sorgu yapısı altta) kayıtlar gösterilmektedir. Küme işlemine baktığımızda kesişim sonucunu elde etmemizi sağlayan bir deyimdir. INTERSECT ALL (SQL 2005 ‘ te yer almamaktadır) ile ise birden fazla tekrar eden kayıtlarda hangi tabloda daha az sayıda tekrar eden kayıt varsa onun sayısı kadar gösterilmektedir.
EXCEPT :
Tablolardan sadece birinde yer alan kayıtlar görüntülenir ve tekrar eden kayıt varsa sadece bir kez görüntülenir. EXCEPT ALL (SQL 2005 ‘ te yer almamaktadır) deyimi ilede birbirinin aynısı kayıtlardan en az sayıda olanı sorgu sonucunda yer alır.
UNION , EXCEPT , INTERSECT deyimlerinin genel kullanım şekli;
SELECT sutun1,sutun2 FROM tablo1
[ UNION | EXCEPT | INTERSECT ]
SELECT sutun3,sutun4 FROM tablo2
–> birinci ve ikinci select ifadesinde yer alan ifadeler özdeş olmalıdır. Sütunlar aynı türden veya uyumlu sütunlardan oluşmalı ve aynı türden sütunların sıraları da aynı olmalıdır.
Örnekler :
Aşağıdaki linklerde örnek uygulamalar bulabilirsiiniz.
Inner Join , Outer Join , Cross Join , Intersect ve Except , Union , Karma Örnekler

Tam ihtiyacım olan konuydu
elinize sağlık yazıların devamını bekliyorum…
Deneyipte yapamadığım konulardan birisiydi. Sayenizde çözdüm. Emeğinize ve elinize sağlık. Klavyeleriniz dert görmesin.