DISTINCT ifadesi tablodaki belirtilen alanda bulunan kayıtlardan birer örnek alır. Yani tekrar eden kayıtlardan bir tane alır ve bunun yanına da tekrar etmeyen kayıtları koyarak bir veri kümesi oluşturur. Ne işimize yarar veya nerede kullanabiliriz sorusu akla gelebilir.
Mesela bir üyelerinizin depolandığı bir tablo olduğunu düşünün. Bu tablodan mesela İstanbul’da kaç tane üyeniz olduğunu bulmak istediğinizi düşünün. Yaptığınız programa bir açılır liste kutusu koyup illerin isimlerini tek tek yazabilirsiniz. Ancak bu durum hem bir zaman kaybı olur hemde sistemde kayıtlı olmayan ileri de listeleyeceği için, açılır liste kutusu açıldığında uzun bir liste olacaktır. Bunun yerine Distinct komutu kullanarak tablodaki Şehir alanında yazan kayıtlar tek düşürülür ve bir açılır liste kutusuna aktarılabilir. Böylece ilgili şehir seçilerek o şehirde kaç tane üyenizin olduğunu görebilirsiniz. Listede görünmeyen şehirden üyeniz olmadığı anlamını rahatlıkla çıkarabilirsiniz.
Distinct Kullanım Biçimi
SELECT DISTINCT alan_adi1,alan_adi2 FROM tablo_adi |
Distinct kelimesinden sonra yazılacak olan alanlara otomatik olarak uygulanır. Yani birden fazla alan üzerinde Distinct yapılacaksa alanların başına tek tek yazılmaz. Ayrıca Distinct komutu tek başına kullanılamaz. Mutlaka SELECT ifadesi ile kullanılmalıdır.
Burada dikkat edilmesi gereken nokta çoklu distinct kullanımında belirtilen alanlardaki verileri bir bütün olarak ele alır ve diğer kayırlarda benzersiz alanları bulmaya çalışır. (örnek2 ve örnek3’e bakabilirisiniz.)
Örnek Tablo Uygulaması:
Örnek olarak aşağıdaki gibi Personel isimli tablomuz olsun.
id | Adi_soyadi | Sehir | Bolum | Meslek_Kodu |
1 | Salih ESKİOĞLU | İstanbul | Bilgi İşlem Sorumlusu | 1234567 |
2 | Ayhan ÇETİNKAYA | Kocaeli | İdari İşler Yöneticisi | 2345678 |
3 | Serkan ÖZGÜREL | Erzincan | Muhasebe | 3456789 |
4 | İlhan ÖZLÜ | İstanbul | Bİlgi İşlem Sorumlusu | 2345678 |
Örnek1:
SELECT DISTINCT Sehir FROM Personel
Bu kod ile tablodaki Sehir alanında bulunan kayıtları birer defa alır.
Çıktısı:
Sehir |
İstanbul |
Kocaeli |
Erzincan |
Örnek2:
SELECT DISTNICT Sehir, Bolum FROM Personel
Bu örnekte Personel tabosundan adı soyadı ve bölüm bilgisinin tutulduğu alanlar seçilmektedir. Ancak burada dikkat edilmesi gerekn nokta iki alanın sanki tek bir alanmş gibi değelendirilmesidir.
Çıktısı:
Sehir | Bolum |
İstanbul | Bilgi İşlem Sorumlusu |
Kocaeli | İdari İşler Yöneticisi |
Erzincan | Muhasebe |
Burada dikkat edeceğiniz üzere tablomuzdaki son satırı almadı. Çünkü Sehir ve Bolum alanlarını tek bir alanmış gibi düşündüğümüz zaman “İstanbul Bilgi İşlem Sorumlusu” ifadesi ortaya çıkar. Son satırdaki kayıtta aynı ifadeye denk gelmektedir. Bu sebeple dikkate alınmadı.
Örnek3:
SELECT DISTNICT Sehir, Bolum, Meslek_Kodu FROM Personel
Bu örnekte Personel tabosundan adı soyadı ve bölüm bilgisinin tutulduğu alanlar seçilmektedir. Ancak burada dikkat edilmesi gerekn nokta iki alanın sanki tek bir alanmş gibi değelendirilmesidir.
Çıktısı:
Sehir | Bolum | Meslek_Kodu |
İstanbul | Bilgi İşlem Sorumlusu | 1234567 |
Kocaeli | İdari İşler Yöneticisi | 2345678 |
Erzincan | Muhasebe | 3456789 |
İstanbul | Bİlgi İşlem Sorumlusu | 2345678 |
Bu örnekte ise bütün kayıtlar gelmiş oldu. Çünkü Sehir, Bolum ve Meslek_kodu alanlarını tek bir alanmış gibi düşündüğümüz zaman; ilk satırı örnek verecek olursak “İstanbul Bilgi İşlem Sorumlusu 1234567” ifadesi ortaya çıkar. Sehir alanında iki tane İstanbul olmasına rağmen ikiside listelenmiştir. Çünkü iki kaydın Meslek_Kodu alanında yazan değer farklıdır.
Aynı tabloyu aşağıdaki kod ile çalıştırdığımız zaman:
Select Distinct Bolum, Meslek_kodu FROM Personel
Çıktısı:
Bolum | Meslek_Kodu |
Bilgi İşlem Sorumlusu | 1234567 |
İdari İşler Yöneticisi | 2345678 |
Muhasebe | 3456789 |
Bilgi İşlem Sorumlusu | 2345678 |
Dikkat edileceği üzere Bilgi İşlem Sorumlusu alanı iki defa gelmiş oldu. Aynı mantıktan yola çıakrak alanların birleştirilmiş olduğunu düşünürsek, Bilgi İşlem Sorumlusu kayıtlarında Meslek_Kodu alanında 1234567 ve 2345678 verileri vardır. Dolayısı ile bu iki satır benzersiz değildir.