SQL DISTINCT Kullanımı(Tekrarlayan kayıtlar, Mükerrer kayıtlar)

Hiç yorum yok
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.
idAdi_soyadiSehirBolumMeslek_Kodu
1Salih ESKİOĞLUİstanbulBilgi İşlem Sorumlusu1234567
2Ayhan ÇETİNKAYAKocaeliİdari İşler Yöneticisi2345678
3Serkan ÖZGÜRELErzincanMuhasebe3456789
4İlhan ÖZLÜİstanbulBİlgi İşlem Sorumlusu2345678

Ö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ı:
SehirBolum
İstanbulBilgi İşlem Sorumlusu
Kocaeliİdari İşler Yöneticisi
ErzincanMuhasebe
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ı:
SehirBolumMeslek_Kodu
İstanbulBilgi İşlem Sorumlusu1234567
Kocaeliİdari İşler Yöneticisi2345678
ErzincanMuhasebe3456789
İstanbulBİlgi İşlem Sorumlusu2345678
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ı:
BolumMeslek_Kodu
Bilgi İşlem Sorumlusu1234567
İdari İşler Yöneticisi2345678
Muhasebe3456789
Bilgi İşlem Sorumlusu2345678
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.

Hiç yorum yok :

Yorum Gönder