SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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

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

SQL AGGREGATE FONKSİYONLARI

--AGGREGATE FUNCTION
--aggregate=toplam,bütün anlamına gelir. 5 tane alt başlıgımız vardir.
--aggregate functionlar select ile from arasına yazılırlar
--1-) Count()-->satır adedini veren fonksiyondur. count=saymak 

--Kaç adet kategori vardır.
select COUNT (*) from Kategoriler
--kategoriler tablosunda kaç adet " Tanimi " satırı vardır.
select count(Tanimi) from kategoriler -- 11 degilde 9 geldi çünkü Tanimi'de 2 hücre 
null oldugu için


--2-)Sum toplam işlemi yapmamızı saglayan fonksiyondur. sum=toplam
--Stokta kaç adet ürün bulunmaktadır.
select SUM(Stok) from Urunler
--stokta bulunan ürünlerin toplam fiyatını bulunuz
select SUM (Fiyat) from Urunler--burada sadece fiyatları toplar getirir.
--Cevap bu degildir.
select sum(Fiyat*Stok) from Urunler -- dogrusu budur


--3-)AVG ortalama almaya yarayan fonksiyondur. average=ortalama
--stogumuz da toplam kaç adet ürün vardır  
select AVG(stok) from Urunler
--stogumuzda ortalama fiyat olarak ne kadarlık ürün vardır
select AVG(fiyat*stok) from Urunler

--4-)MAX fonksiyonu--> belirtilen kolon içinden degeri max olandegeri getirir.
--stogu en yüksek olan ürünü getiriniz.
select max(stok) from Urunler

--5-)MIN fonksiyonu --> belirtilen kolon içinde degeri en az olan degeri getirir.
--Fiyatı en az olan ürünün fiyatını gösteriniz 
select MIN(Fiyat) 'EN DÜŞÜK FİYAT' from Urunler -- BURADA KOLON ADINI DA TIRNAK
İÇİNDE BELİRTMİŞ OLDUK
--Toplam fiyat olarak ne kadarlık ürün satışı yapılmıştır
select sum(Fiyat*Adet*(1-Indirim)) from SatisDetay

2018/01/18

SQL WHERE , BEETWEN, LİKE, IN ,ORDER BY KULLANIMI

   Merhaba arkadaşlar, bugün sizlerler sql ile ilgili 1.dersimizi yapacagız.
 Örneklerle ilerleyecegiz. Kullanıdıgım veritabanı MSSQL, kullandığım tablolar
 ise KUZEY YELİ veritabanına aittir. Kuzey yelini internetten indirip aynı
 örnekleri sizde uyğulayabilirsiniz. Kolay gelsin.

--  WHERE KOMUTU VE ALT BAŞLIKLARI
--WHERE İLE KULLANILAN BAZI  BEETWEN, LİKE, IN

              --LIKE KOMUTU ÖRNEKLER
select * from Urunler where UrunID=5;
--Fiyatı 50den büyük olan ürünleri listele
select * from Urunler where Fiyat>50
select * from Urunler where KategoriID=6
--stogu 20 den küçük olan verileri listele
select * from Urunler where Stok<20
--adı Chang olan urunu getir
select * from Urunler where UrunAdi='Chai'
--ürün adının ilk harfi c ile başlasın sonu önemli degil
select * from Urunler where  UrunAdi like 'a%' -- like komutu ile 
--ürün adının son harfi a gerisi önemli degil
select * from Urunler where UrunAdi like '%a'
--ürün adı a ile başlatyıp p ile bitsin
select * from Urunler where UrunAdi like 'a%up'

--ürün adı ya c ile veya a veya b ile başlayanları getirsin
--**ÖNEMLİ Burada _ kaç karakterden oluşacagını belirtiyor.
select * from Urunler where Urunadi like  '[c,a,b]%' 

--ürün adının sondan 2. karakteri c olanları getir.
select * from Urunler where UrunAdi like '%c_'

--ürünün adında c harfi geçenleri listele
select * from Urunler WHERE UrunAdi like '%c%'
--ürün adında "sos" geçen ürünadlarını listeleyiniz.
select * from Urunler where UrunAdi like '%sos%'

--ürün adı s ile başlayıp e ile biten ürünleri listele
select * from Urunler where UrunAdi like 's%%e'
--ürün adının 2. harfi a veya e olanları listeleyiniz
select * from Urunler where UrunAdi like '_[a,e]%'
-- ürünün sondan 2. harfi t veya l olan ve k ile başlayan ürüleri listeleyin
select * from Urunler where UrunAdi like 'c%[_t,l]_'

              --IN KOMUTU ÖRNEKLER
--in= bir den fazla komutu aynı anda uygulamamızı saglayan komutur.
--in=içinde demektir
--UrunId si 5,7,9,11 olan ürünleri listeleyiniz.
select * from Urunler where UrunID in (5,7,9,11)
--Ürün adı chai ve chang olan ürünleri listeleyin
select * from Urunler where UrunAdi in ('chang','chai')
                --BETWEEN KOMUTU ÖRNEKLER
--Between arasında demektir.
--urunıd si 5 ile 11 arasındaki ürünleri listeleyiniz.
select * from Urunler where UrunID between 5 and 11 
--Fiyatı 25 ile 75 arasında olankayıtları getiriniz.
select * from Urunler where Fiyat between 25 and 75 

        --SQL DE TOP KOMUTU
--Urunler tablosonda ilk 15 kaydı listeleyiniz.
select top 15 * from Urunler
--urunler tablosunda ilk 3 kaydı listeleyiniz.
select  top 3 * from Urunler
--ürün adı c ile başlayıp sondan 2. harfi n veya a olan ve
-- fiyatı 25 ile 75 arasında olan ilk 3 ürünü getiriniz.
select top 2*from Urunler where UrunAdi like 'c%[n,a]_' and Fiyat between 25 and 75


         --SQL DE ORDER BY KOMUTU
--order by komutu sıralama yapmak için kullanıır
--order=sipariş  by=tarafından demektir

--Ürünleri, fiyatları çoktan aza dogru sıralayan listeyi oluşturunuz.
--descending=Azalan ascending=yükselen, artan demektir
select * from Urunler order by Fiyat DESC 
--Dikkat edilirse where kullanılmadı.Çünkü bir kısıtlama söz konusu degil.
--BEETWEN, LİKE, IN Komutlarından herhangi birini kullanmış olsaydık kesinlikle
 where de olacaktı

--kategori ıd si 5 olmayan ve ürün adının 2. harfi i olan ürünleri stoguna göre 
tersten sırala 
select * from Urunler where UrunAdi like '_[i]%' and KategoriID!=5 order BY Stok DESC