Join
Northwind
--------------JOIN----------------- -- Inner Join -- Sadece eşleşen verileri getirir use master go create database JoinDB go use JoinDB go create table Kategoriler ( KategoriID int primary key identity(1,1), KategoriAdi varchar(20) ) go create table Urunler ( UrunID int primary key identity(1,1), UrunAdi varchar(50), -- references ile foreign key oluşturuldu KategoriID int references Kategoriler(KategoriID), BirimFiyat decimal(6,2) ) -- kategori ekleyelim insert into Kategoriler values('Gıda') insert into Kategoriler(KategoriAdi) values('Temizlik') insert into Kategoriler values('Kozmetik') -- kategorileri listeleyelim select * from Kategoriler -- tüm identity ve veri bilgilrini siler sıfır tablo oluşturur truncate table Kategoriler insert into Urunler values('Tahıl',1,12.3) insert into Urunler (UrunAdi,KategoriID,BirimFiyat) values('Ace',2,6.7) insert into Urunler (UrunAdi,BirimFiyat) values('Parfüm',107.89) select * from Urunler select * from Kategoriler -- tüm kategorileri ve ürünlerini listeleyin... -- on dan sonra yazılan eşlemenin sağda solda olmasının hiçbir yerde önemi yok. -- Sadece inner join de tablo sırasının önemi yok. Outer join de tablo sırası önemli olacak select u.UrunAdi,k.KategoriAdi from Urunler as u inner join Kategoriler k on u.KategoriID=k.KategoriID -- Northwind den hangi ürünü hangi tedarikçi getiriyor listeleyin -- ddl lerde go kullanıyoruz. -- dml lerde gerek yok use Northwind go select s.CompanyName,p.ProductName from Suppliers s join Products p on p.SupplierID=s.SupplierID -- hangi şirket hangi tarihte sipariş vermiş -- Customers(Müşteriler) -- Orders (Siparişler) -- CustomerID select c.CompanyName,o.OrderDate from Orders o join Customers c on o.CustomerID=c.CustomerID -- hangi kategorideki hangi urunu hangi tedarikci getiriyormuş??? -- categories, products, suppliers -- tablo join tablo on bilmem ne join tablo on bilmem ne select p.ProductName 'Ürün Adı', s.CompanyName 'Tedarikçi', c.CategoryName 'Kategori' from Products p join Categories c on c.CategoryID=p.CategoryID join Suppliers s on s.SupplierID=p.SupplierID -- hangi çalışanım hangi müşteriden hangi tarihte hangi üründen kac tane sipariş almış? select p.ProductName, o.OrderDate, c.CompanyName, e.FirstName+' '+e.LastName as eleman, od.Quantity from Orders o join Employees e on e.EmployeeID=o.EmployeeID join Customers c on c.CustomerID=o.CustomerID join [Order Details] od on od.OrderID=o.OrderID join Products p on p.ProductID=od.ProductID -- her çalışanın adını soyadını tek kolon olarak, bu çalışanın yaşını ve aldığı toplam sipariş sayısını listeleyiniz... -- Employees, Orders select e.FirstName+' '+e.LastName, COUNT(o.OrderID) as 'Sipariş Sayısı', DATEDIFF(YYYY,BirthDate,GETDATE()) as Yas from Employees e join Orders o on o.EmployeeID=e.EmployeeID group by e.FirstName+' '+e.LastName,DATEDIFF(YYYY,BirthDate,GETDATE()) -- her kategorinin adını o kategorideki en fazla para kazandıran ürünün adını ve kazandırdığı miktarı listeleyin /* Gıda : ekmek 4 ve turşu 8 temizlik : ace 67 rinso 5 cıktı; Gıda turşu 8 temizlik ace 67 */ select * from ( select c.CategoryName,p.ProductName, SUM(od.UnitPrice*od.Quantity) as Toplam from Categories c join Products p on p.CategoryID=c.CategoryID join [Order Details] od on p.ProductID=od.ProductID group by c.CategoryName,p.ProductName ) as t where Toplam= ( select MAX(Toplam) from ( select c.CategoryName,p.ProductName, SUM(od.UnitPrice*od.Quantity) as Toplam from Categories c join Products p on p.CategoryID=c.CategoryID join [Order Details] od on p.ProductID=od. ProductID group by c.CategoryName,p.ProductName ) as tt where tt.CategoryName=t.CategoryName ) --hangi kategorideki(CategotyName) hangi üründen(ProductName) hangi tarihte(OrderDate) hangi müşteriye(CompanyName) hangi çalışan(FirstName,LastName) tarafından kaç tane(Quantity) satılmıştır? select c.CategoryName, p.ProductName, o.OrderDate, od.Quantity,e.FirstName+' '+e.LastName, cu.CompanyName from Categories c join Products p on p.CategoryID=c.CategoryID join [Order Details] od on od.ProductID=p.ProductID join Orders o on o.OrderID=od.OrderID join Employees e on e.EmployeeID=o.EmployeeID join Customers cu on cu.CustomerID=o.CustomerID