Anasayfa / Yazılım / SQL / SELECT ile Sorgulama ve Filtreleme

SELECT ile Sorgulama ve Filtreleme

SELECT ile sorgulama yapabildiğimizi biliyoruz. Peki sorgulama yaparken bazen çok spesifik durumları görmek istemez miyiz? Peki bu doğrultuda neler yapabiliriz? Bu yazımda da bunlara değinmeye çalışacağım. Sorgulama yapılırken filtreleme deyimleri kullanırız. Bunlara değinmek istiyorum.

SELECT ile birlikte WHERE deyiminin kullanımı ve satır filtreleme :

Örneğin Northwind veritabanımızda Employees tablosunda City alanı London olanların FirstName ve LastName alanlarını listeleyelim.

SELECT FirstName, LastName FROM Employees WHERE City = 'London' 

Görüldüğü gibi SELECT deyimim sonrasında neleri listeletmek istediğim sonra FROM deyimim ve hangi tablodan bilgi çekeceğim sonra filtreleme deyimim WHERE ve sonrası da şartım. Şartımda London string bir deyim olduğu için City = ‘London’ yazıyorum dikkat edilirse tek tırnak içinde..

SELECT ile birlikte BETWEEN deyimini kullanarak belli bir değer aralığını listeleme/filtreleme :

BETWEEN deyimi ile birlikte belli bir değer aralığını listeletme imkanına sahibim. Örneğin Northwind veritabanında Products tablosunda stok sayısı 30 ile 100 arasında olanların ürün adını ve fiyatını listeleyelim.

SELECT ProductName, UnitPrice FROM Products WHERE UnitsInStock BETWEEN 30 AND 100

SELECT deyiminden sonra listelemek istediğim kolon adları, FROM deyimi hangi tablodan veri çekeceğim, WHERE deyimi ve nerede filtreleme yapacağım, BETWEEN deyimi ve sayı aralıklarım.. Böylelikle yapmış olduğum işlem Product tablosunda UnitsInStock kolonu için yani stok sayısı için değeri 30 ile 100 arasında olan ürünlerin adları ve fiyatlarını listeliyorum. 30 ve 100 dahil..

Aynı işlemi Between kullanmadan da yazabilirim. Hemen bunu yazalım :

SELECT ProductName, UnitPrice FROM Products WHERE UnitsInStock >=30 AND UnitsInStock <=100

Peki diyelim ki 30 ile 100 arası değil, bu aralığın dışındakileri göstermek istesem nasıl yazarım, burada BETWEEN deyiminden önce NOT deyimini eklemem yeterli,

SELECT ProductName, UnitPrice FROM Products WHERE UnitsInStock NOT BETWEEN 30 AND 100

LIKE deyimi ile eşleştirme : WHERE ile birlikte LIKE deyimini kullanırsak belirttiğimiz durumla eşleştirme yapabilme imkanına sahip oluruz. Bir kaç örnekle daha rahat anlaşılabilir. Burada önemli olan % ve _ karakterleridir. Örneğin,

SELECT LastName, FirstName FROM Employees WHERE LastName LIKE '%an'

Bu deyimle demek istediğim şu, Employees tablosundan LastName kolonundaki veri başı ne olursa olsun son iki karakteri ‘an’ olanların LastName ve FirstName bilgilerini listele..

Bir başka örnek yazalım :

SELECT LastName, FirstName FROM Employees WHERE FirstName LIKE '%an%'

Bu deyim ile birlikte demek istediğim şu Employees tablosundan FirstName kolunundaki verinin başı veya sonu ne olursa olsun içinde ‘an’ karakteri geçen verilerin FirstName ve LastName verilerini listele..

IN Deyiminin kullanımı : IN deyimi bir kaç şartı birbirine bağlamak için kullanılır. Örneğin diyelim ki Employees tablosunda şöyle bir listeleme yapıyorum.

SELECT LastName, FirstName, City FROM Employees WHERE City = 'London' OR City = 'Seattle'

Employees tablsunda City alanı London ve Seattle olanların LastName, FirstName ve City kolonlarını listeliyorum. Bu deyimi IN deyimi ile birlikte şu şekilde de yazabilirim.

SELECT LastName, FirstName, City FROM Employees WHERE City IN ('London','Seattle')

Şeklinde olabilir, belki iki ifade için çok bir şey değişmiyor ama bir çok ifade kullanılacaksa IN hiç de fena olmayacak şekilde kolaylık sağlıyor.

Bir yorum

  1. ben sqlde oluşturduğum KONULAR isimli tablo şu şekilde(DERS_ID,UNITE_ID,KONU_ID,KONU_ACIKLAMA).
    combobox’a DERSLER isimli başka tablomdam dersleri data table kodları ile çektim. CBDERS isimli comboboxdan dersi seçip ünite ekliyorum.
    yapmak istediğim ben hangi dersi seçip ünite eklediysem CBDERS isimli comboboxtan hangi seçersem CBUNITE comboboxıma o üniteler gelsin istiyorum.
    benim yaptığımda bütün üniteler geliyor. Destekleriniz için çok teşekkür ederim. Yardımlarınızı bekliyorum.

Bir cevap yazın

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