-- SQL

SQL | Joins


SQL JOIN iki veya daha çok tabloyu, içlerindeki ortak alanları baz alarak kombine etmek için kullanılır.

1-INNER JOIN

SQL INNER JOIN SYNTAX :

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

Aşağıdaki kod parçası Customers ve Orders tablolarını CustomerID‘ye göre kombine ederek CompanyName ve OrderID sütunlarını seçer ve bu seçimi CompanyName‘e göre sıralayarak listeler.

SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CompanyName;

INNER JOIN metodu sütunlar(columns) arasında eşleşme oldukça iki tablodan da tüm satırları getirir.Yani bir Order’ı olmayan Customer’lar listelenmeyecektir.

CompanyName OrderID
Alfreds Futterkiste 10643
Alfreds Futterkiste 10692
Alfreds Futterkiste 10702
Alfreds Futterkiste 10835

2 – LEFT JOIN

LEFT JOIN SYNTAX :

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;

LEFT JOIN sağ tabloda eşleşme olmasa bile(Orders) sol tablodaki bütün satırları dönderir(Customer). Aşağıdaki kod parçasında OrderID sütununda NULL değerler görülebilir.

SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
CompanyName OrderID
Alfreds Futterkiste 10643
Alfreds Futterkiste 10692
Franchi S.p.A. 10807
FISSA Fabrica Inter. Salchichas S.A. NULL

3 – RIGHT JOIN

RIGHT JOIN SYNTAX :

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

RIGHT JOIN sol tablodaki verilerle eşleşme olmasa bile ( Orders ), sağ tablodaki tüm satırları dönderir( Employees ). Aşağıdaki sorgudan sonra FirstName sütununda NULL değerler görülebilir.

SELECT Orders.OrderID, Employees.FirstName
FROM Orders
RIGHT JOIN Employees
ON Orders.EmployeeID=Employees.EmployeeID
ORDER BY Orders.OrderID;
OrderID FirstName
10248 Steven
10249 Michael
10250 Margaret
10251 Janet

4 – FULL OUTER JOIN

FULL OUTER JOIN SYNTAX :

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

FULL OUTER JOİN sol (Customers) ve sağ(Orders) tablodaki tüm satırları dönderir. Eğer Customer tablosunda Orders tablosyula eşleşmeyen satırlar varsa veya Orders tablosunda Customer tablosuyla eşleşmeyen satırlar varsa bu satırlar da dönderilecektir. Aşağıdaki kod parçasında her iki tarafta da NULL değerler görülebilir.

SELECT Customers.CompanyName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CompanyName;
CompanyName OrderID
Wolski  Zajazd 10870
Wolski  Zajazd 10906
Wolski  Zajazd 10998
Wolski  Zajazd 11044
  • Bu yazıda listelenen tablolardaki veriler fikir oluşturma amaçlıdır ve tüm listenin sadece bir kısmı gösterilmiştir.

Yorum bırak

Yorum