PostgreSQL Joins

PostgreSQL Join, ilgili tablolar arasındaki ortak sütunların değerlerine dayalı olarak bir ( self-join ) veya daha fazla tablodaki sütunları birleştirmek için kullanılır. Ortak sütunlar tipik olarak birinci tablonun birincil anahtar sütunları ve ikinci tablonun yabancı anahtar sütunlarıdır.

PostgreSQL, iç birleştirmeyi , sol birleştirmeyi , sağ birleştirmeyi , tam dış birleştirmeyi , çapraz birleştirmeyi , doğal birleştirmeyi ve self-join adı verilen özel bir birleştirme türünü destekler .

Örnek tabloların ayarlanması

Diyelim ki adı verilen basket_ave basket_bmeyveleri depolayan iki tablonuz var :


 
 
CREATE TABLE basket_a ( a INT PRIMARY KEY, fruit_a VARCHAR (100) NOT NULL ); CREATE TABLE basket_b ( b INT PRIMARY KEY, fruit_b VARCHAR (100) NOT NULL ); INSERT INTO basket_a (a, fruit_a) VALUES (1, 'Apple'), (2, 'Orange'), (3, 'Banana'), (4, 'Cucumber'); INSERT INTO basket_b (b, fruit_b) VALUES (1, 'Orange'), (2, 'Apple'), (3, 'Watermelon'), (4, 'Pear');

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

Tablolarda appleve gibi bazı yaygın meyveler vardır orange.

Aşağıdaki ifade basket_atablodan veri döndürür :

PostgreSQL Joins

Ve aşağıdaki ifade basket_btablodan veri döndürür :

PostgreSQL Joins

PostgreSQL iç birleştirme

Aşağıdaki ifade , ve sütunlarındaki değerleri eşleştirerek ilk tabloyu ( basket_a) ikinci tabloyla ( basket_b) birleştirir :fruit_afruit_b


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a INNER JOIN basket_b ON fruit_a = fruit_b;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

PostgreSQL Joins

İç birleştirme, ilk tablodaki ( basket_a) her satırı inceler . fruit_aSütundaki değeri fruit_b, ikinci tablodaki ( basket_b) her satırın sütunundaki değerle karşılaştırır . Bu değerler eşitse, iç birleştirme her iki tablodan da sütunlar içeren yeni bir satır oluşturur ve bu yeni satırı sonuç kümesine ekler.

Aşağıdaki Venn şeması iç birleştirmeyi göstermektedir:

PostgreSQL Joins

PostgreSQL sol birleştirme

Aşağıdaki ifade, basket_atabloyu tabloyla birleştirmek için left join yan tümcesini kullanır basket_b. Sol birleştirme bağlamında, ilk tabloya sol tablo ve ikinci tabloya sağ tablo denir.


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a LEFT JOIN basket_b ON fruit_a = fruit_b;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

PostgreSQL Joins

Sol birleştirme, sol tablodan veri seçmeye başlar. Fruit_a sütunundaki değerleri sepet_b tablosundaki meyve_b sütunundaki değerlerle karşılaştırır.

Bu değerler eşitse, sol birleştirme, her iki tablonun sütunlarını içeren yeni bir satır oluşturur ve bu yeni satırı sonuç kümesine ekler. (sonuç kümesindeki satır #1 ve #2'ye bakın).

Değerlerin eşit olmaması durumunda, sol birleştirme ayrıca her iki tablodan da sütunlar içeren yeni bir satır oluşturur ve bunu sonuç kümesine ekler. Ancak, sağdaki tablonun ( basket_b) sütunlarını null ile doldurur . (sonuç kümesindeki satır #3 ve #4'e bakın).

Aşağıdaki Venn şeması sol birleştirmeyi göstermektedir:

PostgreSQL Joins

Soldaki tablodan, sağdaki tabloda eşleşen satırları olmayan satırları seçmek için, bir WHEREyan tümce ile sol birleştirmeyi kullanırsınız . Örneğin:


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a LEFT JOIN basket_b ON fruit_a = fruit_b WHERE b IS NULL;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

Çıktı:

PostgreSQL Joins

LEFT JOINöğesinin ile aynı olduğunu unutmayın , LEFT OUTER JOINböylece bunları birbirinin yerine kullanabilirsiniz.

Aşağıdaki Venn şeması, sol tablodan, sağ tablodan eşleşen satırları olmayan satırları döndüren sol birleştirmeyi göstermektedir:

PostgreSQL Joins

PostgreSQL sağ birleştirme

Sağ katılmak solun ters versiyonu katılmak olduğunu. Doğru birleştirme, doğru tablodan veri seçmeye başlar. Sağdaki tablodaki her satırın meyve_b sütunundaki her değeri, meyve_a tablosundaki her satırın meyve_a sütunundaki her bir değerle karşılaştırır.

Bu değerler eşitse, sağ birleştirme, her iki tablodan da sütunlar içeren yeni bir satır oluşturur.

Bu değerlerin eşit olmaması durumunda, sağ birleştirme her iki tablodan da sütunlar içeren yeni bir satır oluşturur. Ancak sol tablodaki sütunları NULL ile doldurur.

Aşağıdaki ifade, basket_atabloyu tabloyla birleştirmek için doğru birleştirmeyi kullanır basket_b:


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a RIGHT JOIN basket_b ON fruit_a = fruit_b;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

İşte çıktı:

PostgreSQL Joins

Aşağıdaki Venn şeması doğru birleştirmeyi göstermektedir:

PostgreSQL Joins

Benzer şekilde, WHEREaşağıdaki gibi bir yan tümce ekleyerek, sağdaki tablodan eşleşen satırları olmayan satırları soldaki tablodan alabilirsiniz :


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a RIGHT JOIN basket_b ON fruit_a = fruit_b WHERE a IS NULL;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

PostgreSQL Joins

RIGHT JOINVe RIGHT OUTER JOINbu nedenle birbirinin kullanabilirsiniz aynıdır.

Aşağıdaki Venn şeması, sağdaki tablodan, soldaki tabloda eşleşen satırları olmayan satırları döndüren sağ birleştirmeyi göstermektedir:

PostgreSQL Joins

PostgreSQL tam dış birleştirme

Tam dış birleşim veya tam döndürür varsa her iki taraftan eşleştirme satırlarla, hem sağ hem sol tablolardan tüm satırları içeren bir sonuç kümesi katılmak. Eşleşme olmaması durumunda tablonun sütunları NULL ile doldurulacaktır.


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a FULL OUTER JOIN basket_b ON fruit_a = fruit_b;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

Çıktı:

PostgreSQL Joins

Aşağıdaki Venn şeması, tam dış birleştirmeyi göstermektedir:

PostgreSQL Joins

Diğerinde eşleşen satırları olmayan bir tablodaki satırları döndürmek için, aşağıdaki WHEREgibi bir yan tümce ile tam birleştirmeyi kullanırsınız :


 
 
SELECT a, fruit_a, b, fruit_b FROM basket_a FULL JOIN basket_b ON fruit_a = fruit_b WHERE a IS NULL OR b IS NULL;

Kod dili: SQL (Yapılandırılmış Sorgu Dili) ( sql )

İşte sonuç:

PostgreSQL Joins

Aşağıdaki Venn şeması, diğer tabloda karşılık gelen satırlara sahip olmayan bir tablodan satırları döndüren tam dış birleştirmeyi göstermektedir:

PostgreSQL Joins

Aşağıdaki resim, ayrıntılı sözdizimi ile şimdiye kadar tartıştığımız tüm PostgreSQL birleşimlerini göstermektedir:

PostgreSQL Joins

 Kaynak

Yorumunuzu Ekleyin


Yükleniyor...
Yükleniyor...