JOİN (BİRLEŞTİRİCİ)

JOİN (Birleştirici): Hayali olarak birleştirme işlemleri yapıyor sorgulamada kullanılır.Farklı tablolardan ilişkili verileri çekmemizi sağlıyor.
İki yada daha fazla tabloyu aynı anda sorgulayarak bir sonuç tablosu (result table) oluşturmaya yarar.

INNER JOİN: Kesişim alanları anlamına gelir.Tablodaki ortak keşişim alanındada yer alan verileri çekiyor. İlişkili tablolarda join koşulunu sağlayan kayıtlar listelenir. 2 tablo arasındaki ortak kayıtlardır.
NOT : Default olarak var olan join tipi inner joindir.

LEFT JOİN : İlk tablonun tüm satırları listelenir diğer tablo ile eşleşen alanlar NULL değer ile gösterilir.

RİGHT JOİN(RİGHT OUTER JOİN) : İkinci tablodaki tüm veriler listelenir. Left Join ile aynı yapıdadır sadece ikinci tablodaki veriler çekiliyor.

FULL JOİN : Her iki tablodaki tüm verileri getirmek için kullanılır.

SELF JOİN : Kendi içerisinde işlemleri gerçekleştirir yani tek bir tablo içinden.

UNION : İki tane sorguyu bağlamamızı sağlıyor tablo yerine sorgu bağlıyor. İki yada daha fazla select sorgusunu tek bir sonuç cümlesinde birleştirir.

UNION ALL : Union all iki sorgu arasındaki tüm verileri getirir ortak verileri 2 kez getirir.

Tanımların havada kalmaması için örnek yapalım bunlarla ilgili.

** Product tablosundaki CategoryID ile Categories tablosundaki CategoryID de ortak alanları birleştirelim.(Ürünlerin Kategori adlarını çekelim.)

select p.ProductName,c.CategoryName
from Products p
inner join Categories c on p.CategoryID=c.CategoryID

** Ürünlerin adlarını ve ürünü alındıkları toptancıların şirket adlarını gösteren sorgu.

select p.ProductName,s.CompanyName
from Products p
inner join Suppliers s on p.SupplierID=s.SupplierID

** 01.01.1998 tarihinden sonra sipariş vermiş müşterilerimin isimleri çekelim.

select distinct c.CompanyName
from Orders o inner join
Customers c on o.CustomerID=c.CustomerID where o.OrderDate>'1998-01-01'


** Beverages kategorisin ait , stokta bulunan ürünler

select p.ProductName,c.CategoryName,p.UnitsInStock from Products p inner join Categories c
on c.CategoryID=p.CategoryID where c.CategoryName='Beverages' and p.UnitPrice >0

** Ürünleri ve bağlı oldukları kategorileri listeleyiniz. Ancak ürünü olmayan kategorilerde sorgu sonucuna dahil edilsin.(left join çünkü ürünü olmayan yani null olanlarıda çekecez.)

 select p.ProductName,c.CategoryName from Categories c left join Products p on c.CategoryID=p.CategoryID

** Ürünleri ve bağlı oldukları kategorileri listeleyiniz. Ancak kategorisi olmayan ürünler ve ürünleri olmayan kategorilerde listeleyiniz.(null olanlarıda çağır diyor soruda)

select c.CategoryName,p.ProductName from Categories c full join Products p on p.CategoryID=c.CategoryID


** 1996-07-08 tarihinde sipariş verilen ürünler hangisidir. OrderDate ve Productname leri göster.

select o.OrderDate,p.ProductName
from Orders o
inner join [Order Details] od on od.OrderID=o.OrderID
inner join  Products p on p.ProductID=od.ProductID
where o.OrderDate ='1996-07-08' order by p.ProductName

** Federal Shipping ile taşınmış ve Nancy nin almış olduğu siparişleri gösteriniz. (orderıd, firstname lastname, orderdate,companyname)

select o.OrderID,
  e.FirstName+' '+e.LastName as NAME,
  o.OrderDate,
  s.CompanyName
from  Employees e
inner join Orders o on o.EmployeeID=e.EmployeeID
inner join Shippers s on s.ShipperID=o.ShipVia
where s.CompanyName='Federal Shipping' and e.FirstName='Nancy'



** Calışan ve müşterilerin bilgileri getirelim. Mesela hem müşterilere hemde çalışanlarına otomatik mesaj atmak gibi (unionda birleştirdiğimiz veri tipleri ve karakterleri aynı tip olmalı) 

 select e.FirstName+' ' +e.LastName as NAME,e.City,e.PostalCode from Employees e
 union
 select c.CompanyName,c.City,c.PostalCode from Customers c











Hiç yorum yok:

Yorum Gönderme