Oracle Database — SQL Temelleri 7 — Join İşlemleri

Herkese Merhaba,

Bu yazımda SQL Join ile sorgulama yapmayı anlatacağım. Verilerin birbiriyle bağlanması (join) sıkça yapılan bir işlemdir. Yeni başlayan birisi için joinler tam birer kargaşadan ibarettir. Konuyu kavrayabilmeniz adına kümelerden esinlenerek anlatacağım.

  • Inner Join
  • Left Join
  • Right Join
  • Full Join

Inner Join

Kümelerdeki karşılığı kesişimdir. Yani her iki tabloda olan veriler gelir.

joinler_innerjoin

SQL INNER JOIN Syntax:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
veya
SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;
Not: İnner join ile join aynı işi yapar.
Örnek:
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.DEPARTMENT_ID
FROM EMPLOYEES E JOIN DEPARTMENTS D
ON (E.DEPARTMENT_ID = D.DEPARTMENT_ID);
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, E.DEPARTMENT_ID
FROM EMPLOYEES E INNER JOIN DEPARTMENTS D
ON (E.DEPARTMENT_ID = D.DEPARTMENT_ID);
Employees ve department tablolarında department_id'leri eşitleyerek inner join sorgusu gerçekleştirdik.
oracle-sql-7-1

Left Join

Kümelerde sol tarafta olan küme demektir. Yani table 1 tablosundakiler koşulsuz gelir, table 2 tablosundan eşleştirebildiklerini (bu kısımlar kesişim bölümüne karşılık gelir) getirir, eşleştiremezse o alanları NULL olarak getirir.
join leftjoin
SQL LEFT JOIN Syntax:
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
veya
SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
NOT: left outer join yazmadığımızda null sonucları göstermez. Örneği inceleyelim.
SELECT e.last_name, e.department_id, d.department_name
FROM employees e LEFT JOIN departments d
ON (e.department_id = d.department_id) ;
oracle-sql-7-2

Right Join

Kümelerde sağ taraftaki kümedir. Table 2 tablosundaki veriler koşulsuz gelir, Table 1 tablosundan eşleştirebildiklerini (bu kısımlar kesişim bölümüne karşılık gelir) getirir, eşleştiremezse o alanları NULL olarak getirir.
join rightjoin
SQL RIGHT JOIN Syntax:
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
VEYA
SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
Örnek:
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
Sağ taraftaki departments tablosunda adı ve id'si boş olanları listeledik.
oracle-sql-7-3

Full Join

Kümelerde birleşime karşılık gelir. Her iki kümedeki tüm elemanları getirir. Eşleştirebildiklerine ilgili tablolardaki değerleri, eşleştiremediklerini NULL olarak getirir.
join fulljoin
SQL FULL JOIN Syntax:
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
Örnek:
SELECT e.last_name, d.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
oracle-sql-7-4
Joinlerin kullanımı bu şekildedir. Farklı sorgular yazarak kendinizi geliştirebilirsiniz. Aklınıza takılan olursa çekinmeyin ;)
Bir sonraki yazıda görüşmek üzere :)