MS-SQL Veritabanı Veritabanı

SQL Distinct İfadesi

SQL’De DISTINCT Kullanım Mantığı

Tablodaki belirli bir alandaki tekrar eden bilgileri tek bir küme altında toplamamızı sağlar. Örneğin sistemimizden ürün alan müşterilerimizin hangi illerden olduğunu görüntülemek istediğimiz zaman, her ilin bir kere gözükmesi yeterlidir. Yani İstanbul şehrinden 3 farklı müşterimiz varsa bu bölgeden müşterimiz var mı anlamamız için üçünün de gözükmesine gerek yoktur. Eğer listelenen şehirler arasında Ankara yok ise bu Ankara şehrinden herhangi bir müşterimiz olmadığı anlamına gelir.

Aslında görüntülemek istediğimiz bu sorguyu farklı komutlar ile de yapabiliriz fakat Dictinct komutu kısa ve öz olmasından dolayı hem kolay hemde zaman açısından kullanıcı dostudur.


İfadenin Kullanım Formülü

şeklindedir. Gördüğümüz üzere alan1 ve alan2 kısımlarını kümelemek için tek bir distinct komutu yeterli oldu. Yani sorgumuzu ” DISTINCT alan1, DISTINCT alan2 ” şeklinde yapmamıza gerek yok. Kümelenecek kaç adet alan varsa sadece onları sıralamamız yeterli olacaktır. Bu ifade Select komutu ile beraber kullanılır çünkü herhangi bir veriyi kümeleyebilmemiz için ilk önce onu veritabanımızdan okumamız gerekiyor. Önce select ile veritabanından çekiyoruz (ya da okuyoruz) ve daha sonra bu ifade ile kümeliyoruz.


Örnek Uygulama

Örneğimizde sistemimizden ürün satın alan kişilerin Ad, Soyad, Konum, Aldıkları Ürün Türü ve Sipariş Numaralarını tutan bir tablomuz olsun.

Tablomuzun ismi m_bilgi olsun.

m_id m_adsoyad Sehir Urun_tur Siparis_no
1 Mustafa Sarıdal Kocaeli Elektronik 45481
2 Oğuz Halit Sak Maraş Tekstil 45482
3 Özcan Yıldırım Sivas Sağlık 45483
4 İbrahim Çakallı Urfa  Kozmetik 45484
5 Fatih Sarıdal Kocaeli Elektronik 45485

Örnek Sorgu 1-)

Ürün sipariş eden müşterilerimizin hangi illerden sipariş verdiğini sorgulayalım:

Yazdığımız sorguların aslında bir okunuşu vardır. Basit bir şekilde bu sorgumuzu okumak istersek ” Seç – farklı değerdeki Sehir verilerini – m_bilgi isimli tablodan. ” veya biraz daha düzgün ifade etmek gerekirse ” m_bilgi isimli tablodan Sehir alanı altında farklı değerdeki verileri kümele. ” şeklinde özetleyebiliriz.

Sehir
Kocaeli
Maraş
Sivas
Urfa

Gördüğümüz üzere şehir alanı altında 2 adet Kocaeli olmasına rağmen sorgumuz sadece bir tanesini bize döndürdü.


Örnek Sorgu 2-)

Ürün sipariş eden müşterilerimizin isim ve sipariş verdikleri şehir bilgisini sorgulayalım.

Sorgumuzun sonucu bize şu şekilde dönecektir:

m_adsoyad Sehir
Mustafa Sarıdal Kocaeli
Oğuz Halit Sak Maraş
Özcan Yıldırım Sivas
İbrahim Çakallı Urfa
Fatih Sarıdal Kocaeli

Gördüğümüz üzere programımız Sehir alanı altında 2 adet Kocaeli değerini de bize döndürdü. Çünkü bu tip sorgulamalarda DISTINCT ifadesinden sonra gelen m_adsoyad ve Sehir alanı tek bir alanmış gibi algılanır. Yani programımız alanları “Mustafa Sarıdal” ve “Kocaeli” şeklinde ayrı ayrı değilMustafa Sarıdal Kocaeli” şeklinde okur. Mustafa ve Fatih ismi farklı değerler olduğu için sondaki Kocaeli değeri sorguda herhangi bir etki yaratmaz.

SQL ile ilgili tüm komutları görüntülemek isterseniz SQL kategorisine göz atabilirsiniz.

Yazar Hakkında

Mustafa Sarıdal

Cyber Security R&D Engineer

Yorum yap

This site uses Akismet to reduce spam. Learn how your comment data is processed.