2018/02/01

CROSS JOIN

--CROSS JOIN...:Tablodaki tüm kayıtları birbiri ile 
--kartezyen çarpım yaparak birbiri ile ilişkilendirir
---------------------------------------------------

--soru...:Hangi personel hangi ürünlerden satış yapmamıştır.
select p.Adi,u.UrunAdi from Personeller  p cross join 
Urunler u --buraya kadar yaptıgımız kartezyen çarpımdır.
except--hangi personel hangi üründen satış yapmıştır.
select p.Adi, u.UrunAdi from Personeller  p 
left join Satislar s on s.PersonelID=p.PersonelID
left join SatisDetay sd on sd.SatisID=s.SatisID
left join Urunler u on u.UrunID=sd.UrunID
group  by p.Adi , u.UrunAdi

---------------------------------------------------
--soru...: Hangi tedarikçiden hangi ürün hiç tedarik edilmemiştir. select t.SirketAdi,u.UrunAdi from Urunler u cross join Tedarikciler t except--aşagıda hangi tedarikçi hangi ürünü tedarik etmiştirin cevabı select t.SirketAdi,u.UrunAdi from Tedarikciler t left join Urunler u on t.TedarikciID=u.TedarikciID group by t.SirketAdi,u.UrunAdi
---------------------------------------------------
--Hangi ürün hangi müşteriye hiç satılmamıştır. select u.UrunAdi,m.MusteriAdi from Urunler u cross join Musteriler m except --Hangi ürün hangi müsteriye satılmıştır. select u.UrunAdi,m.MusteriAdi from Urunler u left join SatisDetay sd on u.UrunID=sd.UrunID left join Satislar s on s.SatisID=sd.SatisID left join Musteriler m on m.MusteriID=s.MusteriID group by u.UrunAdi,m.MusteriAdi

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

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 

2018/01/22

SQL ALT SORGULAR


              --ALT SORGULAR 1 (İç içe sorgular)
--1.Kullanım şekli:Select ile from arasınabir sorgu yazılır.
--Bu sorgu geriye sadece bir sütun döndürür.
Select *,(select KategoriAdi from Kategoriler where KategoriID=Urunler.KategoriID) 
'kategori adı' from Urunler
--Urunler tablosunu tedarikçi adı ile birlikte listeleyiniz.
select *,(select SirketAdi from Tedarikciler where TedarikciID=Urunler.TedarikciID)
'ŞİRKETADLARI'  from Urunler
--Ürünler tablosunu tedarikçi adı ve kategori adı, ürün adı, fiyat ve stok
-- bilgileri ile birlikte listeleyiniz. 
select UrunAdi,Fiyat,Stok,(select KategoriAdi from Kategoriler
 where KategoriID=Urunler.KategoriID) 
' Kategori Adı',(Select SirketAdi from Tedarikciler where 
TedarikciID=Urunler.TedarikciID)'Tedarikçi Adı' from Urunler
--Satışlar tablosunu müşteri adı unvanı(aynı hücrede), personel adı soyad(aynı hücre)
-- ile birlikte listeleyiniz.
select *,(select MusteriAdi+' '+MusteriUnvani from Musteriler 
where MusteriID=Satislar.MusteriID)
'Müşteri Adı Soyadı', (select Adi+' '+SoyAdi from Personeller 
where PersonelID=Satislar.PersonelID)
'Personel Adı Soyadı' from Satislar

--Ürünler ile birlikte ürünün toplam satış adedi bilgisinide gösteren sorguyu yazınız.
select *,(select SUM(Adet) from SatisDetay where UrunID=Urunler.UrunID) 'ADET' 
 from Urunler
--Yapılan satışları maximum satış fiyatı bilgisi ile listeleyiniz
select *,(select MAX(Fiyat) from SatisDetay where SatisID=Satislar.SatisID)'MAXFİYAT'
 from Satislar
--ürünleri ürüne uygulanan maximum indirim yüzdesi bilgisi ile birlikte listeleyen 
--sorguyu yazınız.
select *,(select MAX(Indirim) from SatisDetay where UrunID=Urunler.UrunID)
'max indirim' from Urunler
--Yapılan satışları toplam satış tutarları ile birlikte listeleyen sorguyu yazınız