Merhabalar, bugün sizlere SQL DISTINCT kullanımından bahsedeceğim. Distinct nedir, nasıl kullanılır? Konuya bu şekilde giriş yaparak başlayalım.
Distinct Nedir?
Veritabanında bulunan bir tablonun alanlarında tekrar eden veriler olabilir. İşte DISTINCT ifadesi, tekrar eden bu kayıtlardan birer örnek olacak şekilde veri çekilmesini sağlar. Tekrar eden kayıtlardan bir tane alarak bunların yanına tekrar etmeyen kayıtları koyar. Ve bu şekilde veri kümesini oluşturur. Tekrarlı kayıtların tekrarsız bir şekilde görünmesini sağlar da diyebiliriz. Tekrarlanan verilerden sadece 1 tanesi getirilir.
Örneğin aşağıdaki tabloda ülke alanındaki ABD, Almanya, İtalya, Fransa ve Japonya verilerinin birden fazla tekrar ettiğini görmekteyiz. Eğer tekrarlanan bu verileri eleyerek her farklı veriden sadece bir adet bulunmasını istiyorsak o zaman DISTINCT ifadesini kullanırız.
Kullanımı aşağıdaki gibidir:
Select DISTINCT alanAdi FROM tabloAdi
Distinct komutu tek başına kullanılamaz. Mutlaka SELECT ifadesi ile kullanmak gerekir.
tablo: markalar
ID | Marka | Model | Ulke |
1 | Ford | Fiesta | ABD |
2 | Tesla | Model S | ABD |
3 | BMW | Sedan | Almanya |
4 | Fiat | Egea Cross | İtalya |
5 | Jeep | Renegade | ABD |
6 | Renault | Megane | Fransa |
7 | Nissan | Qashqai | Japonya |
8 | Hyundai | Elantra | Güney Kore |
9 | Lamborghini | 10 Diablo GT1 | İtalya |
10 | Citroen | C3 | Fransa |
11 | Volkswagen | Tiguan | Almanya |
12 | Toyota | Corolla | Japonya |
13 | Aston Martin | Vanquish | İngiltere |
Yukarıdaki tabloyu baz alıp yalnızca farklı ülkelerin listesini çıkarmak istiyorsak yapacağımız işlem aşağıdaki gibi olur:
SELECT DISTINCT Ulke FROM markalar
Sonuç kümesi:
ulke | |
1 | ABD |
2 | Almanya |
3 | Fransa |
4 | Güney Kore |
5 | İngiltere |
6 | İtalya |
7 | Japonya |
Bu sorgu ile tekrar eden kayıtları 1 defa getirerek her bir ülkeyi çekmiş oluyoruz.
Şimdi yalnızca ABD’ye ait araba modellerini çekelim. Kullanacağımız yazım şu şekilde olur:
SELECT DISTINCT Model FROM markalar WHERE ulke='ABD'
Sonuç kümesi:
Model | |
1 | Fiesta |
2 | Model S |
3 | Renegade |
Bir başka örnekle devam edelim. Aşağıda Musteriler tablosu yer almaktadır.
tablo: Musteriler
id | isim | sehir | musteriTipi | |
1 | Eylül Şaşmaz | Antalya | Bireysel | esasmaz@gmail.com |
2 | Yılmaz Eskici | Adana | Kurumsal | yeskici@gmail.com |
3 | Engin Aşkın | Eskişehir | Bireysel | enginas@hotmail.com |
4 | Aklan A.Ş. | Çorum | Kurumsal | info@aklan.com |
5 | Ali Gümüş | Mardin | Bireysel | aligumus@hotmail.com |
6 | Cemre Ak | Manisa | Bireysel | cemreak@icloud.com |
7 | Silver Ltd. Şti. | İstanbul | Kurumsal | info@silver.com |
8 | Altıntaş A.Ş. | Giresun | Kurumsal | info@kagitci.com |
Şimdi aşağıdaki kullanım ile verileri çekmek isteyelim. Önce müşteri tiplerini DISTINCT ile kullanalım.
SELECT DISTINCT musteriTipi FROM Musteriler
Sorgu sonucu dönecek değerler şu şekilde olacaktır:
musteriTipi | |
1 | Bireysel |
2 | Kurumsal |
Çünkü bireysel ve kurumsal olmak üzere tabloda iki farklı müşteri tipi bulunmaktadır.
SELECT COUNT(DISTINCT musteriTipi) FROM Musteriler;
Bu sorgunun sonucunda Musteriler tablosunda kaç adet müşteri tipi olduğunu saydırırız. COUNT kullanımını diğer yazılarda daha detaylı göreceğiz.
Sorgunun sonucu:
(No column name) | |
1 | 2 |
Bir sonraki yazılarda görüşmek dileğiyle.
Yorum bırakın