Alt sorgularla semi join ve anti join

SQL'de Verileri Birleştirme

Maham Faisal Khan

Senior Content Developer, DataCamp

Tüm join’ler sahneye

id alanında INNER JOIN diyagramı

İki tabloyu gösteren bir diyagram: left_table ve right_table. Sağda iki sorgunun birleştirilmesi sonucu, her iki tabloda da id sütununda eşleşen kayıtlar döndürülür.

SQL'de Verileri Birleştirme

Toplayıcı join’ler

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
SQL'de Verileri Birleştirme

Toplayıcı join’ler

Toplayıcı bir join’i açıklayan bir diyagram. Solda left_table ve right_table var. Sağda, iki tablo arasında id sütunu kullanılarak yapılan bir INNER JOIN sonucu gösterilir. Farklı adlardaki alanlar özgün adlarıyla eklenir. date alanı her iki tabloda da olduğundan iki kez eklenir.

SQL'de Verileri Birleştirme

Semi join

Bir semi join, ikinci tablodaki bir koşul sağlandığında ilk tablodaki kayıtları seçer.

Bir semi join’i göstermek için kullanılacak iki tabloyu (left_table ve right_table) gösteren bir diyagram. left_table iki sütun içerir: id ve col1. right_table tek bir sütun içerir: col2.

SQL'de Verileri Birleştirme

Semi join

Bir semi join’i göstermek için kullanılan iki tablo (left_table ve right_table). col2, col1’i filtrelemek için kullanılacaktır. left_table’da col1’in col2’de eşleşme bulamadığı kayıtlar soluklaştırılmıştır.

SQL'de Verileri Birleştirme

Semi join

İki tabloyu (left_table ve right_table) gösteren bir diyagram. Sağda iki tablo üzerinde yapılan bir semi join sonucu var. Yalnızca left_table içindeki col1’in, col2’de eşleşme bulduğu kayıtlar döndürülür. Bunlar 2 ve 3 kimlikleridir.

SQL'de Verileri Birleştirme

Semi join’a başlangıç

SELECT country, continent, president
FROM presidents;
| country  | continent     | president               |
| -------- | ------------- | ----------------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
SQL'de Verileri Birleştirme

Semi join’ı genişletme

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
SQL'de Verileri Birleştirme

Semi join’ı tamamlama (alt sorguya giriş)

SELECT president, country, continent
FROM presidents
WHERE country IN
    (SELECT country
     FROM states
     WHERE indep_year < 1800);
|-------------------------|-----------|-------------|
| president               | country   | continent   |
|-------------------------|-----------|-------------|
| Marcelo Rebelo de Sousa | Portugal  | Europe      |
|-------------------------|-----------|-------------|
SQL'de Verileri Birleştirme

Anti join

İki tabloyu (left_table ve right_table) gösteren, anti join’i açıklayan bir diyagram. col2, col1’i filtrelemek için kullanılacaktır. left_table’da col1’in col2’de eşleşme bulamadığı kayıtlar soluklaştırılmamıştır.

SQL'de Verileri Birleştirme

Anti join

İki tabloyu (left_table ve right_table) gösteren bir diyagram. Sağda iki tablo üzerinde yapılan bir anti join sonucu var. Yalnızca left_table içindeki col1’in, col2’de eşleşme bulamadığı kayıtlar döndürülür. Bunlar 1 ve 4 kimlikleridir.

SQL'de Verileri Birleştirme

Başkanlarla bir anti join

SELECT country, president
FROM presidents
WHERE continent LIKE '%America' 
    AND country NOT IN
        (SELECT country
         FROM states
         WHERE indep_year < 1800);
| country  |  president       |
| -------- | ---------------- | 
| Uruguay  | Luis Lacalle Pou |
| Chile    | Gabriel Boric    |
SQL'de Verileri Birleştirme

Hadi pratik yapalım!

SQL'de Verileri Birleştirme

Preparing Video For Download...