SQL Distinct Kullanımı

      Yorum yok SQL Distinct Kullanımı

SQL içinde bir sorgulama yaptığımızda bazen istemediğimiz tekrarlı verilerle karşılaşırız ve bu tekrarı engellemek istediğimiz durumlar olabilir.
Genelde tekrarlı verileri engelleme işlemini  o alandaki kayıt çeşidini saydırmak için kullanırız, örneğin ürünlerin kategorilerini saydıracağımız zaman ürün tablosunda kategori alanlarının birer tane gelmesi gerekir ya da  kategorileri bir combobox nesnesinde göstermek için aynı kategorilerin birden fazla gelmesini istemeyiz. Bu istemediğimiz tekrarlı verileri engellemek için Distinct ifadesi kullanılabilir.

 

Kullanım şekli;
SELECT DISTINCT  [TABLO_ALANLARI] FROM [TABLO_ADI]

Nasıl kullanıldığı ile ilgili örnek ise aşağıda;

Personeller tablosunda Sehir alanını seçerek kayıtlarımızı görelim

Solda bulunan yukarıdaki kodun çıktısında aynı şehirlerin tekrar ettiğini görüyoruz. Bu durumda biz personellerin çalıştığı şehirleri saymaya çalıştığımızda hatalı sonuçla karşılaşıyoruz.

 

Distinct komutu burada devreye giriyor.

 

 

Soldaki çıktıda görüldüğü gibi tekrarlı kayıtları engellemiş olduk.

 

 

Burada dikkat edilecek nokta birden fazla tablo alanı girebiliriz, fakat bu alanlardan birine özel bir şekilde distinct kullanamayız. Yani birkaç alan yazdıysak Distinct hepsine etki eder. Aynı anda girdiğimiz bütün alanlarda tekrar varsa  kayıt tekrarını o zaman engeller. Tek bir alan üzerinden değil çıktının tümü üzerinden düşünmeliyiz

Aşağıdada bununla ilgili bir örnek yapalım;

 

Solda görüldüğü üzere Unvan ve Sehir alanlarını listeledik ve 9 adet kayıt geldi.

 

 

 

Distinct ile kullanıldığında ise ;

Aşağıdaki sonucu alıyoruz.

Bu kez sonuçlar 7 ye düştü.

Dikkat ederseniz daha önce kayıtlar bu şekildeydi;

2-  London   –  Sales Manager
3 – London   –  Sales Representative
4 – London   –  Sales Representative
5 – London   –  Sales Representative

 

Son çıktıda ise iki alandanda aynı anda tekrar eden  4.  ve 5 . satırlrı çıkarmış olduk.

 

 

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir