SQL'de Koşullu Listelemeler
-- Kullanılacak veritabanı olarak Ticaret veritabanının seçilmesi
use Ticaret
---------------------------------------------------------------------------------------
-- Bilgi giriş sırasına göre kayıtlı olan ve normalde bu sıraya göre gelen listeyi 'order by' fiiliyle sıralatıyoruz. Sıralama order by cümleciğinde kolonların yazılış sırasına göre olur. En önce sol baştaki kolona göre, sonuncu olarak da sağ baştaki kolona göre sıralama yapılır. En soldaki kolon en dış küme olmuş olur. En sağdaki kolon ise en iç küme olur.
-- Order by kullanıldığında listelenecek kolonların yazılış sırası, order by cümleciğindeki yazılış sırasına göre olmalıdır. Böylece kümeler anlaşılsın ve sıralama belli olsun.
select
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi
from SatisBilgileri
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi
order by SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi
---------------------------------------------------------------------------------------
-- View nesnesinde veya tabloda SatisTutari kolonu yokken SatisFiyati ile SatisAdedi çarptırılarak yapılan sorgu
select
*, SatisFiyati*SatisAdedi as SatisTutari
from SatisBilgileri
*, SatisFiyati*SatisAdedi as SatisTutari
-- View nesnesine SatisTutari kolonunun Hesaplanmış Kolon olarak eklenmesi
alter view SatisBilgileri
select
SatisTarihi,
BayiAdi,
BolgeAdi,
UrunCinsiAdi,
MarkaAdi,
SatisFiyati,
SatisAdedi,
SatisFiyati*SatisAdedi as SatisTutari
from Satislar ks
-- View nesnesinde özel durumlar dışında order by kullanmıyoruz. Özel durumları anlatacağım.
-- View nesnesinde SatisTutari Hesaplanmış Kolon olarak bulunduğundan bir işlem yapmadan gelir.
select
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi, SatisTutari
from SatisBilgileri
where year(SatisTarihi) = 2013 and month(SatisTarihi) = 10
order by BayiAdi,
SatisTarihi desc
---------------------------------------------------------------------------------------
select
*
from SatisBilgileri
where BayiAdi='KARA' and year(SatisTarihi)=2012 and MarkaAdi='Adel' and
UrunCinsiAdi='Kalem'
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi) between 2010 and 2012
select
SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi, SatisFiyati, SatisAdedi, SatisTutari
order by SatisTarihi, BolgeAdi, BayiAdi, UrunCinsiAdi, MarkaAdi
---------------------------------------------------------------------------------------
-- SatisBilgileri View nesnesinden 2013 yılı Ekim ayı satışlarının listelenmesi
select
*
from SatisBilgileri
from SatisBilgileri
-- SatisBilgileri View nesnesinden Kara isimli bayinin 2012 yılındaki Adel markalı Kalem satışlarının listelenmesi
*
from SatisBilgileri
---------------------------------------------------------------------------------------
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2012 yılı satışlarının listelenmesi
-- Aynı kolonda filtreleme yaparken 'or' bağlacını, farklı kolonlarda ise 'and' bağlacını kullanıyoruz. select
*
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi)=2012
*
from SatisBilgileri
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2010, 2011, 2012 yıllarındaki satışlarının listelenmesi
-- Bir kolona ait birden fazla kriteri bir parantez içinde yazıyoruz. Filtreleme yaptığımız kolonu 'or', 'or', 'or' yazmış gibi bu parantezin içindekilerle karşılaştırıyoruz. Uyanlar listeleniyor. select
*
from SatisBilgileri
where (BayiAdi='KARA' or BayiAdi='DENİZ') and year(SatisTarihi) in (2010, 2011, 2012)
*
from SatisBilgileri
-- SatisBilgileri View nesnesinden Kara veya Deniz isimli bayilerin 2010 ile 2012 yılları arasındaki satışlarının listelenmesi
-- Bir sayısal kolondaki bilgileri iki değer arasında aratıyorsak 'between ... and ...' kalıbını kullanıyoruz. İki değerin arasına 'and' bağlacını yazıyoruz.
select
*from SatisBilgileri
---------------------------------------------------------------------------------------
select
distinct UrunCinsiAdi
from SatisBilgileri
where BayiAdi='KARA' and year(SatisTarihi) = 2012
-- SatisBilgileri View nesnesinden Kara isimli bayinin 2012 yılında sattığı UrunCinsiAdi bilgilerinin listelenmesi
-- Aşağıdaki listede listelenen bilgi tekrarlı geldiği için distinct terimiyle tekrarsız liste elde ediyoruz.
distinct UrunCinsiAdi
from SatisBilgileri
order by UrunCinsiAdi