2018/01/25

Sql inner join

--JOİN...: İlişkili birden fazla tabloyu 
--birleştirmek için kullanılan bir yöntemdir.  
--3 Çeşit join vardır.İnner join, outer join, cross join

 --İnner join...: Tablodaki NULL olmayan kayıtları listeler
 select UrunAdi, fiyat,Stok,KategoriAdi,Tanimi 
  from Urunler inner join kategoriler on 
  Urunler.KategoriID=Kategoriler.KategoriID 

  --Ürünleri ve sadece şirket isimleriyle ile birlikte listeleyiniz 
  select Urunler.*,SirketAdi from Urunler inner join Tedarikciler  on
  Tedarikciler.TedarikciID=Urunler.TedarikciID

  --Yapılan satışları müşteri adı sayadı ve personel adı,
  -- soyadı ile birlikte listeleyiniz. 
  select Satislar.*,(MusteriAdi+MusteriUnvani) 'musteri ad soyad ',
  (Adi+SoyAdi)'personel ad soyad' from Satislar inner join
  Musteriler on Satislar.MusteriID=Musteriler.MusteriID
  inner join Personeller on Personeller.PersonelID=Satislar.PersonelID

--Hangi personel hangi üründen taplamda kaç dolarlık satış yapmıştır
--(personel ürünler satisdetay satis)
--ilk iş bunları bir birine joinleyelim

select Personeller.Adi+ ' '+Personeller.SoyAdi as personel,
Urunler.UrunAdi,SUM(SatisDetay.Adet*SatisDetay.Fiyat
*(1-SatisDetay.Indirim)) from Satislar
inner join Personeller  on
Satislar.PersonelID=Personeller.PersonelID 
inner join SatisDetay on
Satislar.SatisID=SatisDetay.SatisID
inner join Urunler on
Urunler.UrunID=SatisDetay.UrunID
group by Urunler.UrunAdi,Personeller.Adi+' '+Personeller.SoyAdi 


--hangi personel hangi kategoriden toplam kaç adet ürün satışı yapmıştır.
--(Personel,satis,satisdetay,kategori)

select (p.Adi+p.SoyAdi) as 'Personel adı ve soyadı' ,k.KategoriAdi,
sum(sd.Adet) as 'sattıgı adet'  from Satislar s 
inner join Personeller p on
p.PersonelID=s.PersonelID
inner join SatisDetay sd on
sd.SatisID=s.SatisID
inner join Urunler u on
u.UrunID=sd.UrunID
inner join Kategoriler k on
k.KategoriID=u.KategoriID
group by p.Adi+p.SoyAdi,k.KategoriAdi

--Nakliyeci şirket adı 'speedy Express' olan nakliyeci,
-- satış fiyatı 15 dolardan yüksek kaç adet ürün taşımıştır.
--(nakliyeciler,satislar,satisdetay,)
select n.SirketAdi , SUM(sd.Adet) from Satislar s
inner join Nakliyeciler n on
n.NakliyeciID=s.ShipVia
inner join SatisDetay sd on
sd.SatisID=s.SatisID
where n.SirketAdi='Speedy Express' and  sd.Fiyat >15 
group by n.SirketAdi