Skip to content

Instantly share code, notes, and snippets.

@farukcan
Last active May 31, 2023 12:16
Show Gist options
  • Save farukcan/a25b63df976090462f51d77188ca9ae3 to your computer and use it in GitHub Desktop.
Save farukcan/a25b63df976090462f51d77188ca9ae3 to your computer and use it in GitHub Desktop.
Joinler

Join

Joinler iki tabloyu birleştirip, iki tablodan aynı andan veri seçmeye(select) yarar.

Joinler hepsi aslında kartezyen çarpımı yapar. Ve iki tipi vardır. İnner, Outer.

Inner Join

Inner join iki tablonun kartezyen çarpımını alıp where operatorle birleştirir.

Ayrıca null değerleri birbine bağlayamaz, bu sebeple outer ile asıl işlevsel farkı null değerlerin olamamasıdır.

(Bazı dillerde CROSS operator ile yapılır)

Outer Join

Outer join yine kartezyen çarpımı yapar. Ve farklı syntaxı vardır bu sebeple JOIN operatore vardır. En önemli işlevsel farkı null kabul etmesidir. Ve nullu ne taraftan kabul ettiğine göre 3'e ayrılır.

Left Join

Sol taraf asla null olamaz, ama sağ taraf null olabilir.

Sqlite'de sadece left join var.

Right Join

Sol taraf null olabilir, ama sağ taraf null olamaz.

Pek yaygın kullanılmaz.

Full Outer Join

İki tarafta null olabilir.

Motorda Full outer desteği yoksa, aynı sonucu left ve right joinlenmiş tabloları UNION operatorler birleştirerekte ulaşabilirsin.

Kullanılacak pek senaryo yoktur.

Örnekler

INNER JOIN örneği:

SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;

LEFT JOIN örneği:

SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

RIGHT JOIN örneği:

SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

FULL JOIN örneği:

SELECT customers.customer_id, customers.customer_name, orders.order_id, orders.order_date
FROM customers
FULL JOIN orders ON customers.customer_id = orders.customer_id;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment