SQL join işlemi küme mantığında çalışır. Tabloları birleştirmede kullanırız. inner join, left join, right join tipleri vardır. Şimdi bunları örneklerle anlatalım. Eğer sorgu yazmayı ( select kullanımını ) bilmiyorsanız ilk olarak onu öğrenmenizi tavsiye ederiz.
Örnek 1:
select * from Products p inner join [Order Details] o on p.ProductID = o.ProductID
inner join leme işlemi yaparken aynı olan sütunları eşleştirilir. Burada her iki tabloda ProductID ler eşlenerek gelir. Önce Products yazıldığı için onu önce çeker. Not : inner join yerine sadece join de yazsak inner join işlemi yapar. Varsayılan olarak inner join ayarlandığı için
Örnek 2:
select ContactName, OrderID, Address from Customers inner join Orders on Customers.CustomerID = Orders.CustomerID where Address like '%12%'
Siparişlerinin adresinde 12 sayısı geçen müşterilerin adları(contactName), siparişId(orderıd), adres lerini çeker..
SQL left join Kullanımı
Soldaki tablodaki tüm değerler ve sağdaki ortak değerleri çekmek için kullanırız.
örnek 1:
select ContactName, OrderID from Customers left join Orders on Customers.CustomerID = Orders.CustomerID order by ContactName asc
Burada soldaki yani Customers tablosundaki ContactName, OrderID leri çeker..
örnek 2:
select ContactName, OrderID from Customers left join Orders on Customers.CustomerID = Orders.CustomerID where Orders.OrderID is null order by ContactName asc
Hiç sipariş vermemiş müşteri vermemiş müşteriyi çeker..
SQL right join Kullanımı
Sağ tablonun tamamı sol ortak değerleri çeker…
örnek 1:
select FirstName ,OrderID from Orders right join Employees on Orders.EmployeeID = Employees.EmployeeID where orders.OrderID is null order by FirstName
Hiç sipariş vermemiş çalışanları çekmek için.
full outer join Kullanımı
Bütün hepsini çekmek için kullanırız.
örnek 1:
select ContactName, OrderID from Customers full outer join Orders on Customers.CustomerID = Orders.CustomerID order by ContactName
Burada ContactName, OrderID sütunlarını çekmek için kullanılır.
Örnek 2:
select * from orders inner join Shippers on orders.ShipVia = Shippers.ShipperID
Orders ile Shippers tablolarını çeker. Burada önemli olan nokta ortak sutun olmadığı halde ilişki verilen sütunlarla eşleme yapılabilir.
Başka bir yazımızda görüşmek üzere…