SQL JOIN
nedir ve farklı türleri nelerdir?
SQL JOIN
iki veya daha fazla veritabanı tablosundan veri almak için kullanılan bir yöntemdir.
SQL JOIN
ler nelerdir?Toplam beş adet JOIN
vardır. Bunlar:
1. JOIN or INNER JOIN
2. OUTER JOIN
2.1 LEFT OUTER JOIN or LEFT JOIN
2.2 RIGHT OUTER JOIN or RIGHT JOIN
2.3 FULL OUTER JOIN or FULL JOIN
3. NATURAL JOIN
4. CROSS JOIN
5. SELF JOIN
Bu tür bir JOIN
de, her iki tabloda da koşulla eşleşen tüm kayıtları alırız ve her iki tabloda da eşleşmeyen kayıtlar raporlanmaz.
Başka bir deyişle, INNER JOIN
tek bir gerçeğe dayanır: SADECE HER İKİ tablodaki eşleşen girdiler listelenmelidir.
Başka herhangi bir JOIN
anahtar sözcüğü (INNER
, OUTER
, LEFT
, vb. gibi) içermeyen bir JOIN
in bir INNER JOIN
olduğunu unutmayın. Başka bir deyişle, JOIN
a INNER JOIN
için sözdizimsel şeker (bkz: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).
OUTER JOIN
alır
Ya da, bir tablodaki eşleşen satırları ve diğer tablodaki tüm satırları Ya da, tüm tablolardaki tüm satırlar (bir eşleşme olup olmadığı önemli değildir).
Üç çeşit Outer Join vardır:
2.1 LEFT OUTER JOIN veya LEFT JOIN
Bu birleştirme, soldaki tablodaki tüm satırları, aşağıdaki tablodaki eşleşen satırlarla birlikte döndürür
Sağ masa. Doğru tabloda eşleşen sütun yoksa, NULL
değerlerini döndürür.
2.2 SAĞ DIŞ ORTAK veya SAĞ ORTAK
Bu JOIN
, sağ tablodaki tüm satırları, aşağıdaki tablodaki eşleşen satırlarla birlikte döndürür
Sol masa. Sol tabloda eşleşen sütun yoksa NULL
değerlerini döndürür.
2.3 FULL OUTER JOIN veya FULL JOIN
Bu JOIN
, LEFT OUTER JOIN
ve RIGHT OUTER JOIN
öğelerini birleştirir. Koşullar karşılandığında her iki tablodan da satır döndürür ve eşleşme olmadığında NULL
değerini döndürür.
Başka bir deyişle, OUTER JOIN
şu gerçeğe dayanır: SADECE tablolardan BİRİNDE (SAĞ veya SOL) veya tabloların HER İKİSİNDE (TAM) eşleşen girişler listelenmelidir.
Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
Bu iki koşula dayanmaktadır:
JOIN
eşitlik için aynı isme sahip tüm sütunlarda yapılır.Bu daha çok teorik bir konu gibi görünmektedir ve sonuç olarak (muhtemelen) çoğu DBMS Bunu destekleme zahmetine bile girmeyin.
İlgili iki tablonun Kartezyen çarpımıdır. Bir CROSS JOIN
sonucu bir anlam ifade etmeyecektir
çoğu durumda. Dahası, buna hiç ihtiyaç duymayacağız (ya da kesin olmak gerekirse en az ihtiyaç duyacağız).
Bu JOIN
in farklı bir formu değildir, daha ziyade bir tablonun kendisine JOIN
idir (INNER
, OUTER
, vb.).
Bir JOIN
cümlesi için kullanılan işlece bağlı olarak, iki tür JOIN
olabilir. Bunlar
Equi JOIN
Theta JOIN
Hangi JOIN
türü için olursa olsun (INNER
, OUTER
, vb.), SADECE eşitlik operatörünü (=) kullanırsak, o zaman şunu söyleriz
JOINbir
EQUI JOIN`dir.
Bu EQUI JOIN
ile aynıdır ancak >, <, >= vb. gibi diğer tüm operatörlere izin verir.
Birçok kişi hem
EQUI JOIN
hem de ThetaJOIN
'iINNER
,OUTER
ile benzer görür vbGİRİŞ
. Ama ben bunun bir hata olduğuna ve fikirler belirsiz. ÇünküINNER JOIN
,OUTER JOIN
vb. tüm bağlantılar tabloları ve verilerini içerirken,EQUI JOIN
veTHETA JOIN
sadece ilkinde kullandığımız operatörlerle bağlantılıdır.Yine,
NATURAL JOIN
i bir türNATURAL JOIN
olarak gören birçok kişi vardır. "peculiar"EQUI JOIN
. Aslında, bu doğrudur, çünkü ilkNATURAL JOIN
için bahsettiğim koşul. Ancak, bunu yapmak zorunda değiliz bunu yalnızcaNATURAL JOIN
ile sınırlandırın. INNER JOINs,
OUTER JOINs vb. de bir
EQUI JOIN` olabilir.
Tanım:
JOIN'ler, birden fazla tablodan bir araya getirilen verileri aynı anda sorgulamanın bir yoludur.
RDBMS ile ilgili olarak 5 tür birleştirme vardır:
Equi-Join:** İki tablodaki ortak kayıtları eşitlik koşuluna göre birleştirir. Teknik olarak Join, bir tablonun Birincil Anahtar değerlerini ve diğer tablonun Yabancı Anahtar değerlerini karşılaştırmak için eşitlik operatörü (=) kullanılarak yapılır, bu nedenle sonuç kümesi her iki tablodan ortak (eşleşen) kayıtları içerir. Uygulama için INNER-JOIN bölümüne bakınız.
Doğal Birleştirme:** Equi-Join'in geliştirilmiş versiyonudur, burada SELECT işlemi yinelenen sütunu atlar. Uygulama için bakınız INNER-JOIN
Eşit Olmayan Birleştirme:** Birleştirme koşulunun eşit operatör (=) dışında kullanıldığı Eşit Birleştirmenin tersidir; örneğin, !=, <=, >=, >, < veya BETWEEN vb. Uygulama için INNER-JOIN bölümüne bakınız.
Kendi Kendine Katıl:: Bir tablonun kendisiyle birleştirildiği özelleştirilmiş bir birleştirme davranışı; Bu genellikle kendi kendine referans veren tabloları (veya Unary relationship entity) sorgulamak için gereklidir. Uygulama için INNER-JOIN'lere bakın.
Kartezyen Ürün:** Her iki tablodaki tüm kayıtları herhangi bir koşul olmaksızın çapraz olarak birleştirir. Teknik olarak WHERE-Clause içermeyen bir sorgunun sonuç kümesini döndürür.
SQL endişesi ve ilerlemesine göre, 3 tür birleştirme vardır ve tüm RDBMS birleştirmeleri bu tür birleştirmeler kullanılarak gerçekleştirilebilir.
INNER-JOIN: İki tablodan eşleşen satırları birleştirir (veya birleştirir). Eşleştirme, tabloların ortak sütunlarına ve karşılaştırma işlemine dayalı olarak yapılır. Eşitlik temelli koşul ise o zaman: EQUI-JOIN gerçekleştirilir, aksi takdirde Non-EQUI-Join.
OUTER-JOIN: İki tablodan eşleşen satırları ve NULL değerlere sahip eşleşmeyen satırları birleştirir (veya birleştirir). Ancak, eşleşmeyen satırların seçimini özelleştirebilir, örneğin, alt türlere göre ilk tablodan veya ikinci tablodan eşleşmeyen satırı seçebilir: LEFT OUTER JOIN ve RIGHT OUTER JOIN.
2.1. SOL OUTER JOIN (diğer adıyla LEFT-JOIN): İki tablodan eşleşen satırları ve yalnızca LEFT tablosundan (yani ilk tablodan) eşleşmeyen satırları döndürür.
2.2. SAĞ DIŞ BİRLEŞİM (a.k.a, SAĞ BİRLEŞİM): İki tablodan eşleşen satırları ve yalnızca SAĞ tablodan eşleşmeyen satırları döndürür.
2.3. FULL OUTER JOIN (diğer adıyla OUTER JOIN): Her iki tablodan eşleşen ve eşleşmeyenleri döndürür.
CROSS-JOIN: Bu birleştirme birleştirme/birleştirme yapmaz, bunun yerine Kartezyen çarpım gerçekleştirir.
Not: Self-JOIN, gereksinime göre INNER-JOIN, OUTER-JOIN ve CROSS-JOIN ile elde edilebilir ancak tablo kendi içinde birleşmelidir.
1.1: INNER-JOIN: Equi-join uygulaması
SELECT *
FROM Table1 A
INNER JOIN Table2 B ON A.<Primary-Key> =B.<Foreign-Key>;
1.2: INNER-JOIN: Doğal-JOIN uygulaması
Select A.*, B.Col1, B.Col2 --But no B.ForeignKeyColumn in Select
FROM Table1 A
INNER JOIN Table2 B On A.Pk = B.Fk;
1.3: NON-Equi-join uygulaması ile INNER-JOIN
Select *
FROM Table1 A INNER JOIN Table2 B On A.Pk <= B.Fk;
1.4: SELF-JOIN ile INNER-JOIN
Select *
FROM Table1 A1 INNER JOIN Table1 A2 On A1.Pk = A2.Fk;
2.1: OUTER JOIN (tam dış birleştirme)
Select *
FROM Table1 A FULL OUTER JOIN Table2 B On A.Pk = B.Fk;
2.2: LEFT JOIN
Select *
FROM Table1 A LEFT OUTER JOIN Table2 B On A.Pk = B.Fk;
2.3: DOĞRU BİRLEŞİM
Select *
FROM Table1 A RIGHT OUTER JOIN Table2 B On A.Pk = B.Fk;
3.1: CROSS JOIN
Select *
FROM TableA CROSS JOIN TableB;
3.2: CROSS JOIN-Self JOIN
Select *
FROM Table1 A1 CROSS JOIN Table1 A2;
//VEYA//
Select *
FROM Table1 A1,Table1 A2;