Sitemap

Merhaba arkadaşlar kısa süredir Microsoft SQl Server’ da komut kullanımları üzerine yazılar yazıyorum. Bugün ele alacağımız komutlar ‘’And ve Or’’ komutları.

Bundan önceki yazdığım ‘’Where’’ komutunun kullanımı ile ilgili olan yazımda tek bir koşul olarak ele almıştık. Fakat bugün üzerinde çalışacağımız bu yazıda ‘’Where’’ komutunun başka koşullarla da kullanılabileceğini sizlere aktarmaya çalışacağım.

‘’And’’ komutu , belirtilen her iki seçenek içinde geçerli olsun anlamında kullanılır iken, ‘’Or’’ komutu belirtilenlerden herhangi birisi anlamında kullanılan bir komuttur. Çalıştığımız örnek veri tabanı olan AdventureWorks’ den faydalanarak örnekler üzerinden ilerleyelim;

Yaptığımız bu sorguda Person.Person tablosunda ki FirstName kolonu ‘’Yuhong’’ olan ve LastName kolonu ‘’Li’’ olan verileri listelemesinin komutunu verdik.

Press enter or click to view image in full size

Görüldüğü gibi sorgumuz da iki koşul var. Ve bu iki koşula uyan veriler karşımızda listeleniyor.

Şimdi ‘’Or’’ komutu ile bir örnekte bulunmak istiyorum. Person.Person tablosunda ki LastName kolonu ‘’Duffy’’ ve ya ‘’Mohan’’ olan verileri getirmek istiyoruz varsayalım. Şöyle bir sorgu yazmamız gerekicek;

Yaptığımız bu sorguda LastName’si ‘’Duffy’’ ve ya ‘’Mohan’’ olan veriler listelenmiş oldu. Bu verileri listelerken aynı zaman da bu verilere ait BusinessEntityID,Tittle,FirstName,LastName ve ModifedDate kolonlarına da ulaşmak istedik ve önümüze böyle bir sonuç çıkmış oldu;

Press enter or click to view image in full size

Where komutunun ardından iki tane koşul koyabildiğimiz gibi, ikiden fazla farklı komutta koyabiliriz. Yalnızca ikiden fazla koşul koyduğumuz takdirde dikkat etmemiz gereken bir konu, parantez kullanmamız gerekicek. Örneklere geçtiğimiz de şu an oluşan kafa karıştırıcı durum ortadan kalkacaktır. Birlikte şimdi şöyle bir örnek yapalım;

Veritabanımızda FirstName kolonu ‘’Frank’’ olduğuna emin olduğumuz fakat LastName kolonu ‘’Lee’’ mi ‘’Li’’ tam hatırlayamadığımız bir veri mevcut olsun. Bizim burada ulaşmak istediğimiz LastName kolonunda ki veriyi tam olarak hatırlamadığımız için LastName Lee’de listelensin Li’de listelensin. Fakat FirstName mutlaka Frank olsun. Buradaki sorgumuz nasıl olur? ;

Sorgu sonrasında böyle bir tablo ile karşılaşmış olmamız gerek;

Press enter or click to view image in full size

Burada gördüğünüz gibi istediğimiz sonuca ulaşamadık, gördüğünüz gibi LastName alanında yalnızca Li ve Lee listelendi fakat FirstName alanında yalnızca Frank olmasını istemiştik. Fakat farkı FirstName değerleri de önümüze listelendi. Şimdi hatırlamanızı istiyorum parantez kullanımında bahsetmiştim tam olarak burada yaşadığımız bunun eksikliği. Bir de şöyle bir sorgu yazalım birlikte;

Press enter or click to view image in full size

Parantezin önemini tam olarak şu an anladığımızı düşünüyorum :)

Gördüğünüz üzere parantezi sorgumuza doğru bir şekilde eklediğimiz de sonucumuzu doğru aldık. Peki neden parantez kullanımı böylesine önemli. T-SQL’de sorgular değerlendirilirken öncelikle ‘’And’’ komutu esas alınır. Ardından ‘’Or’’ komutu değerlendirilir. Parantez burada öncelik sağlıyor aslında. Böylelikle önceliği ‘’Or’’ komutuna vermemiz de bizi istediğimiz sonuca ulaştırıyor.

Bugün elimden geldiğince sizlere bu konuda ki bildiklerimi aktarmaya çalıştım. Vakit ayırıp okuduğunuz için teşekkür ederim.

--

--

Uğur Murat Arslan
Uğur Murat Arslan

Written by Uğur Murat Arslan

Database Administrator — Data Science — Music Producer

No responses yet