[T-Sql] Kümeleme Komutları

Küme fonksiyonları en az iki select sorgusu arasında küme işlemleri yapmaya yarar, yani birleşim kümesi, kesişim kümesi veya fark kümesi gibi işlemler yapar. Küme komutlarının çalışabilmesi için iki select sorgusunda aynı sayıda ve aynı tipte kolonlar olmalıdır.

Union -> Birleşim kümesi oluşturmaya yarar.

Çalıştığımız tüm firmalar(tedarikçi veya müşteri):


select 
       c.CompanyName,
       'Müşteri' 
   from Customers as c
union
select 
       s.CompanyName,
       'Tedarikçi' 
   from Suppliers as s

Continue reading

[T-Sql] Join İfadesi

Merhaba arkadaşlar,

Bu yazıda join ifadelerini anlatacağım.Join iki ya da daha fazla tabloyu birleştirerek denormalize edilmiş şekilde gösterme işlemini gerçekleştirir. Join ifadelerini en güzel şu resim anlatmaktadır.

Sql Joins

Aşağıdaki sorgu Kategoriler ile Ürünler tablosundaki verilerin kesişimlerinin çıktısını verir.


select * 
   from Categories as c
      inner join Products as p 
         on p.CategoryID = c.CategoryID

Satışlarla ilgili bir rapor çıkrınız. ürünün adı,şu anki fiyatı satıştaki fiyatı,şu anki stoğu kaç adet satıldığı


select 
       p.ProductName,
       p.UnitPrice,
       p.UnitsInStock,
       od.Quantity,
       od.UnitPrice 
    from [Order Details] as od
    inner join Products as p 
          on od.ProductID = p.ProductID

Ürünlerin tedarikçi firma adı,iletisim adı,adres,telefon ve fax bilgileri ile listeleyiniz.


select 
       p.ProductName,
       s.CompanyName,
       s.ContactName,
       s.Address,
       s.Phone,
       s.Fax 
   from Products as p 
       inner join Suppliers as s
             on p.SupplierID = s.SupplierID

Hangi kategoride hangi üründen kaç adet satılmıştır?


select 
       p.ProductName,
       c.CategoryName,
       SUM(od.Quantity) 
   from Categories as c 
       inner join Products as p 
          on p.CategoryID=c.CategoryID
       inner join [Order Details] as od 
          on od.ProductID = p.ProductID 
   group by p.ProductName,c.CategoryName 
   order by SUM(od.Quantity) desc

Müşterilerin hangi kategoride kaç dolarlık alışveriş yaptığını raporlayınız.


select 
       ca.CategoryName,
       cu.CompanyName,
       SUM(od.Quantity*od.UnitPrice) 
   from Categories as ca
       inner join Products as p 
          on ca.CategoryID = p.CategoryID
       inner join [Order Details] as od 
          on od.ProductID=p.ProductID
       inner join Orders as o 
          on o.OrderID = od.OrderID
       inner join Customers as cu 
          on cu.CustomerID = o.CustomerID 
   group by ca.CategoryName,cu.CompanyName

Outer join -> Sorgu tablolarından birindeki tüm verilerin gelmesi ve diğerindeki eşleşen verilerin gelmesini sağlamak için kullanılır.inner join sadece eşleşen kayıtları getirir,outer join bu eksikliği gidermek içindir.
Right->sonra yazılan tablonun yani bağlanan tablonun tüm kayıtlarının eşleşmese bile gelmesini sağlar
Left-> önce yazılan tablonun tüm kayıtlarının eşleşmese bile gelmesini sağlar
Full-> önceki ve sonraki iki tablonun da tüm kayıtlarının gelmesini sağlar

Outer Join’lerde outer kelimesi yazılmadan da kullanılabilir.Eğer sadece Join yazılırsa bu inner join olarak kabul edilir.


select * 
   from Categories as c
      left outer join Products as p 
         on p.CategoryID=c.CategoryID
   order by c.CategoryName


select * 
   from Categories as c
      right outer join Products as p 
          on c.CategoryID = p.CategoryID


select * 
   from Categories as c
      full outer join Products as p 
         on p.CategoryID = c.CategoryID

Müşterilerin alışveriş yaptığı tarihleri listeleyin hiç alışveriş yapmamışsa dahi müşteri gözüksün.


select 
       c.CompanyName,
       o.OrderDate 
   from Customers as c
      left outer join Orders as o 
         on c.CustomerID = o.CustomerID 
   order by o.OrderDate

İşte bu kadar =) Join ifadeleri ilk kullanımlarda mantığınıza oturmayabilir. O yüzden resimdeki kümeleri incelemenizde fayda vardır.

Bir sonraki yazımda görüşmek üzere kendinize iyi bakınız.

[T-Sql] Alt Sorgular Ödev-Cevap

Merhaba arkadaşlar,
Bir önceki yazımda alt sorguları anlatmıştım. En sonunda da bir ödev vermiştim. O ödevin cevaplarını burada veriyorum.

1997 yılında yapılan satışlarda ne kadar ciro elde edilmiştir?


select 
       SUM(od.Quantity*od.UnitPrice) 
   from [Order Details] as od 
   where od.OrderID in(
      select o.OrderID 
          from Orders as o 
           where o.OrderDate 
               between '01.01.1997' and '01.01.1998'
   )

Continue reading

[T-Sql] Alt Sorgular

Merhaba arkadaşlar,
Bu yazımda sizlere alt sorguları yani iç içe select ifadelerini anlatmaya çalışacağım.

Öncelikle ne gibi alanlarda kullanabileceğimize örnek verelim ki kafamızda daha iyi canlansın. Optimize edilmiş bir veritabanında tablolar birbirlerine yabancıl anahtar dediğimiz anahtarlar ile bağlıdır. Bir tablodaki yabancıl anahtar diğer tablodaki birincil anahtar ile ilişkilidir. Bu da iki tablo arasında ilişkili ifadelerin tutulmasına yarar. Northwind veritabanında diagram oluşturduysanız tabloların birbirlerine olan bağlarını rahatlıkla görebilirsiniz.

Örneğin Northwind veritananında Products tablosu ile Categories Tablosu birbirleri ile ilişkilidir. Bu ilişkiyi CategoryID sağlamaktadır.

Continue reading

[T-Sql] Group by ifadesi

Grouping: Bir tablo içerisinde belirlediğimiz bir kolona veya kolonların varyasyonuna göre kümeleme yapar.Bu sayede kümelenmiş grup içerisinde aggregate fonksiyonları kullanılabilir.Fiyata göre gruplayıp görüntülemek istediğimizde group by deyimi kullanılır.
Distinct deyiminin işini yapmaktadır ancak fark aggregate fonksiyonları ile oluşturulan grupları işler.

Aggregate functions -> Belirli bir kümeye uygulanacak işlemleri içerir.

Sum -> verilen küme içinde verilen kolondaki sayısal değerleri toplar.
Count-> verilen küme içinde belirtilen kolondaki elemanları sayar.Null değer dışında bir değer var ise onu sayar.

Fiyatı 18 olan ürünleri gruplayıp bu gruba ait adeti,stoktaki sayıyı toplayıp gösterir:


select 
       p.UnitPrice,
       COUNT(p.UnitPrice) as [Count],
       SUM(UnitsInStock) as [Sum] 
   from Products as p
   group by p.UnitPrice

select distinct p.UnitPrice 
   from Products as p

Continue reading

[T-Sql] Select Sorgusu

Merhaba arkadaşlar, bu yazıda Select ifadelerini anlatmaya calışacağım. Anlatım az örnek fazla olacaktır. Kullanarak ve görerek öğreneceğiz.
Select ifadesi bir veriyi veritabanından ayıklama ve seçmek için kullanılan komuttur. Geriye sonuç dediğimiz
tablo vari veriler döndürür. Bu verileri management studio’da yine tablo şeklinde görülür.

select [kolon isimleri] from [tablo adi]

Sorgularımızı New Query diye adlandırdığımız yeni bir pencerede yazacağız. Bu sayfayı açmak için File menüsünün hemen altındaki New Query butonuna tıklıyoruz.

use Northwind

bu sorgu ile veritabanını seçmiş oluyoruz. Execute butonuna veya F5’e tıklayarak işlemleri çalıştırabiliriz. Eğer ki birden fazla sorgu var ise her bir kodu sırasıyla çalıştırır. Sadece sonuncu sorguyu çalıştırmak istiyorsak eğer, çalıştırmak istediğimiz sorguyu seçmemiz gerekir. Böylece sadece seçili olan sorgu çalışır.

Aşağıdaki sorgu Products(ürün) Tablosundan ProductName(ürün adı),UnitPrice(birim fiyatı),UnitsInStock(Stoktaki birim) bilgilerini getirir:
Continue reading

[MS-Sql] Giriş: Northwind veritabanının yüklenmesi

Merhaba abilerim,ablalarım,kardeşlerim 😀 yeni bir yazı dizisiyle karşınızdayım. Ms-Sql Server‘ı elimden geldiğince anlatmaya calışacağım. Bunun için sıfırdan veritabanı oluşturabiliriz. Ancak olayları daha iyi kavrayabilmemiz için microsoft’un bir zamanlar hazırlamış olduğu veritabanlarından biri olan northwind’i kullanacağız. Bunun yanı sıra pubs ve Adventureworks veritabanlarını da kullanabilirdik ancak öğrenme aşamasında AdventureWorks gibi karmaşık bir veritabanına gerek yoktur. Dersler bittikten sonra optimize bir veritabanı nasıl olur diye incelemek isterseniz AdventureWorks veritabanını inceleyebilirsiniz.

Neyse bu kadar hikayeden sonra neden veritabanlarına ihtiyaç duyuldu onu anlatim biraz. Belki bu anlatacağım kısmı benden başka en az 100 kişiden duymuşsunuzdur. Benim hatrıma bir kez de benden dinleyin 🙂

Gaz ve toz bulutundan başlarsak insanlar her zaman verileri saklama ihtiyacı duymuştur. Gerek duvarlara oymuş gerekse derilere çizmiştir. Zamanla ve teknoloji ilerledikçe veriler kağıtlarda tutulmaya başlanmıştır. Daha 10 yıl öncesine kadar bakkalımız alışverişlerimizi veya borçlarımızı bize verilen bir defterde tutmuyor muydu ? Peki verinin güvenliği nerede ? isteyen o defteri istediği gibi düzenleyebilirdi. Ayrıca müşteri sayısının binleri hatta milyonları bulduğu bir marketiniz olsa bu verileri bir kağıtta tutup erişmek ne kadar da zor olacaktı değil mi ?
Bilgisayar teknolojisinin gelişmesiyle veriler ilk olarak metin belgesi diye adlandırdığımız .txt uzantılı belgelerde saklandı. Ancak burada da veriye erişme sıkıntısı, verinin düzenli tutulması ve büyüyen veri yığınları gittikçe sıkıntılar oluşturmaya başladı.
Continue reading

[C#] ListView Kontrolü

Herkese Merhaba,
Bu yazımda sizlere listview kontrolünün kullanımından bahsedeceğim ve basit bir uygulama yapacağım.
ListView kontrolü kullanımı çok geniş bir nesnedir. 5 türde gösterim seçeneği mevcuttur. En genel kullanımı Details’dir. Ben de bu yazımda buna değineceğim.
ListView kontrolünü seçtikten sonra sağ üst köşesinde smart tag belirecektir. Bu tag ile listView e ait birçok işlemi gerçekleştirebiliriz. ListView kullanım amacımız tuttuğumuz listeyi kolonlar halinde görmek istemektir. Yani kullanıcıya güzel ve ferah bir arayüzü sunmaktır. Kolon dedik peki kolon nedir açıklayacak olursak,girilen her bilgi aslında bir kolona aittir, adını koymak bize kalmıştır. Örneğin kullanıcıların T.C Kimlik No’sunu gördüğü kolona ben TCKN diyebilirim. Yani altında bulunan alanlarda T.C kimlik numaraları yer almaktadır.Bu şekilde verileri düzenli bir şekilde listeleyebiliriz. ListBox’dan farkı da budur.
Windows’da en sık gördüğümüz kontroldür aslında. Bir klasör açtığımızda ve içine girdiğimizde ortada boş geniş bir alan görürüz. bu alan listviewdir.
ListView’ler ListViewItem türünden nesneler saklarlar.
Aşağıda ListView Kontrolünü anlatan bir uygulama geliştireceğiz. VS 2010 ile bir proje oluşturup formu aşağıdaki şekilde yerleştiriniz.
Doğum tarihini tutacak alan DataTimePicker’dır.

Siz listview eklediğinizde görünüm aşağıdaki şekilde olmayacaktır. Diğer adımlarda listviewi düzenliyeceğiz.

Continue reading