2018/02/01

SQL OUTER JOIN

--OUTER JOIN
--outer join(dış birleşim)...:İlişkili tablolardaki null 
--kayıtlar dahil bütün kayıtalrı getirir.
--3 Çeşit outer join(dış birleşim) vardır.

--1. si left outer join(sol dış birleşim)..:left join de soldaki 
--null dahil bütün kayıtlar getirilir.Diger tablonun ise sadece ilişkili 
--kısımlarını getirir. 
select * from Satislar left  join Musteriler on
Satislar.MusteriID=Musteriler.MusteriID

--2.si right outer join(sağ dış birleşim)...:right joinde
--sağdaki tablonun null dahil
--bütün degerlerini getirir. Diger tablonun ise sadece ilişkili verileri gelir.
select * from Satislar right  join SatisDetay on
Satislar.SatisID=SatisDetay.SatisID

--3.sü ise full outer join...: Her iki tabloda null
--kayıtlar dahil bütün kayıtları getirir.
select * from Urunler full outer join Kategoriler on
Urunler.KategoriID=Kategoriler.KategoriID


--soru..:Kesişim kümesi hariç diger alanları listele
select * from Urunler full outer join Kategoriler  on
Kategoriler.KategoriID=Urunler.KategoriID
where Kategoriler.KategoriID IS NULL OR Urunler.KategoriID  IS NULL

--Hangi tedarikçiden toplamda  kaç dolarlık  ürün tedarik edilmiştir.
--(tüm tedarikçiler gelmelidir.)
select Tedarikciler.TedarikciID,sum(Urunler.Fiyat)
from Tedarikciler left join Urunler on-
Urunler.TedarikciID=Tedarikciler.TedarikciID
group by Tedarikciler.TedarikciID 


--Hiç satış yapılmayan müşterilerimizi listeleyen sorguyu yazınız.

select * from Musteriler left join Satislar on
Musteriler.MusteriID=Satislar.MusteriID where Satislar.SatisID Is null

--nakliye edilmeyen siparişleri listeleyiniz.
select * from Satislar left join Nakliyeciler on 
Nakliyeciler.NakliyeciID=Satislar.ShipVia
where Satislar.ShipVia IS NULL

select * from Nakliyeciler
select * from Satislar

--Hiç nakliye yapmayan nakliyecileri listeleyen sorguyu yazınız.
select * from Nakliyeciler left join Satislar on
Nakliyeciler.NakliyeciID=Satislar.ShipVia
where Satislar.ShipVia IS NULL

--Hangi personel hangi üründen hiç satış yapmamıştır.

select Urunler.UrunAdi,Personeller.adi from Personeller left  join Satislar on 
Personeller.PersonelID=Satislar.PersonelID
left join SatisDetay on 
Satislar.SatisID=SatisDetay.SatisID
left join Urunler on
Urunler.UrunID=SatisDetay.UrunID
group by Urunler.UrunAdi,Personeller.adi