Sql Gelişmiş Select Sorguları II

Sql Server 2008Sql makale dizimizde şimdi sıra select içinde : group by , where-and , between , like , in-not in  , union  sorgu ifadeleri ile case , when  şart kontrolünü incelemeye geldi.Profesyonel yazılım dünyasında , tahmin edileceği üzere çeşitli durumlara göre işlevsel sorgular yazma ihtiyacı ortaya çıkabilmektedir.Bu yazımızda daha fonksiyonel sorgular yazmanın temel yöntemlerini kavrayacağız.

  1. İş senaryomuza göre personel isimli bir veri tabanı olduğunu düşünelim.Tablomuzda bolum_no gibi bir sütunumuz olsun.Bu sütun çalışanların çalıştıkları departman hakkında belirtici bir tamsayı değerine sahip olduğunu düşünelim.İş veren ya da amirimizin bizden departmanlara göre ödenen toplam maaşları istediğini düşünürsek :
    Select bolum_no, sum(maas) as [ÖDENEN TOPLAM MAAŞ] 
    from personel 
    group by bolum_no
    

    "Group by" sql kodu veri tabanı üzerindeki tabloyu verilen sütuna göre gruplandırma işlemine tabi tutar.

  2. Sorgu ihtiyaçlarımızdan biri de birden fazla kritere göre seçme işlemi durumudur.Bu senaryo içinde ise 1 nolu bölümde çalışıp maaş değeri 1000 tl den fazla olan çalışanları listeleyelim.
    Select * from personel where bolum_no=1 and maas>1000
    

    "where-and" bize bu işlemi yapma kolaylığını sağladı.

  3. Belirli bir sütun içinde belli değerler arasında olanları sıralamak istersek between-and komutu bize yardımcı oluyor.Örneğin 1981 ile 1985 yılları arasında doğmuş olan personelleri listelemek istersek :
    Select * from personel 
    where personel_d_tarihi between 1981 and 1985 
    
  4. Eğer veri tabanından şeçme işlemi yaparken benzerlerini getirmesini istersek like komutunu kullanırız.Personel bilgilerini listelerken ismini herhangi bir yerinde "L" harfi olanları seçmek için :
    Select * from personel where personel_ismi like '%L%'
    

    ifadesi kodlanır.

  5. Bir diğer yardımcı sql  in komutudur.Bu komut sayesinde belli değerlere uyan satırlar seçilmiş olur.İş senaryomuzda çeşitli nedenlerle disiplin cezaları almış personellerin sicil noları bir tabloda tutuluyor olsun.Bizden ceza almış personellere ait bilgiler istenirse : 
    Select * from personel where sicil_no in 
    (select sicil_no from cezali_personeller)
    

    Bu kod sayesinde iç içe select sorgu mantığını da kavramış oluyoruz..."not in" komutu ise tam tersi şekilde çalışır.Yani ceza almamış personeller ait bilgileri listelemek istersek :

    Select * from personel where sicil_no not in 
    (select sicil_no from cezali_personeller)
    
  6. Paralel çalışan iki ya da daha fazla select sorgusundan dönen sonuçların bir tablo üzerinde birleştirilmesi için union ifadesi kullanılır.
    Select * from personel where bolum_no=1
    union
    Select * from personel where personel_d_tarihi>1980
    
  7. Personel bilgilerini veri tabanında tutarken cinsiyet alanını genelde B ya da E şeklinde tutarız ki kaynak kullanımı açısından tedbirli olalım ; ancak bu verileri kullanıcılara sunarken daha net , açık bilgiler sunmalıyız.Bu kodumuz  çok önemli ve kullanışlı : 
    Select * from personel
    case cinsiyet // hedef sütun
    when 'B' then 'Bayan'
    when 'E' then 'Erkek'
    end as CİNSİYET // dinamik sütun oluşturuyoruz
    from personel
    

    Yeni bir paylaşımda buluşmak dileğiyle..

Benzer Makaleler

Programciyim.com
Mart 3, 2010, 6:48 pm
Programciyim.com
Mart 2, 2010, 12:32 pm
Programciyim.com
Ocak 2, 2010, 5:04 pm