Sayfalar

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

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

2018/01/19

SQL GROUP BY KULLANIMI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

--notlar count=saymak sum=toplam average=ortalama
     
     
     --GROUP BY KULLANIMI
--Group by : Tablo içindeki verileri gruplamayı saglar.

--Hangi kategoriden kaç tane ürün vardır. 
--not: Soruda hangi kelimesi geçiyorsa orada group by vardır.
--not: Hangi kolunu group by ladıysak o kolonu yazdırmamız lazım
select kategoriId , count(*) from Urunler group by KategoriID

--stokta hangi kategoriden kaç dolarlık ürün vardır.
select KategoriID,SUM(Fiyat*Stok) 'toplam tutar' from Urunler group by KategoriID
--hangi kategoriden stokta kaç adet ürün vardır.
select KategoriID ,SUM(STOK) 'TOPLAM STOK ADEDİ' from Urunler group by KategoriID
--Hangi tedarikçiden kaç adet ürün tedarik edilmiştir.
select TedarikciID ,count(TedarikciID) FROM Urunler group by TedarikciID
--hangi tedarikçiden stokta toplamda kaç dolarlık ürün vardır.
select TedarikciID , sum(Stok*fiyat) from Urunler group by TedarikciID
--hangi personel hangi müşteriye kaç adet satış yapmıştır (satıslar tablosu)
select PersonelID,MusteriID,count(*) from Satislar group by PersonelID,MusteriID
--Hangi müşteri hangi nakliyeciden kaç adet siparişte bulunmuştur
--(nakliyeci=shipvia kolonudur)
select MusteriID,ShipVia,count(*) from Satislar group by MusteriID,ShipVia
--Hangi üründen toplamda kaç dolarlıksatış yapılmıştır ve büyükten küçüge
--sıralayınız(satısdetay)
select UrunID , sum(Fiyat*adet*(1-Indirim)) 'satış miktarı' 
from SatisDetay group by UrunID order by [satış miktarı] desc