AND & OR Elemanları 2
Farklı AND ve OR sorguları aşağıdaki tablo için yazacağız.
Personel Tablosu
| per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
|---|---|---|---|---|---|---|---|
| 1 | Ahmet | Yılmaz | 20 | E | Ankara | Türkiye | 2000 |
| 2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
| 3 | Ayşe | Can | 23 | K | İstanbul | Türkiye | 2500 |
| 4 | Fatma | Ak | 35 | K | Ankara | Türkiye | 2800 |
| 5 | John | Smith | 45 | E | New York | ABD | 3500 |
| 6 | Ellen | Smith | 40 | K | New York | ABD | 3000 |
| 7 | Hans | Müller | 30 | E | Berlin | Almanya | 4000 |
| 8 | Frank | Cesanne | 35 | E | Paris | Fransa | 3700 |
| 9 | Abbas | Demir | 26 | E | Adana | Türkiye | 1500 |
| 10 | Hatice | Yılmaz | 26 | K | İstanbul | Türkiye | 3000 |
1- Adı Ahmet ve Mehmet olanlar:
SELECT * FROM personel WHERE isim= 'Ahmet' AND isim= 'Mehmet'
Bu sorgunun sonucu boş kümedir. Zira adı aynı zamanda hem Ahmet hem Mehmet olan kayıt yoktur. Bu örneği vermemin nedeni Adı Ahmet ve Mehmet olanlarifadesinin normalde Ahmetler ve Mehmetler şeklinde anlaşılması. Ancak SQL’de işleçlerin (operatörlerin) anlamları nettir. Sorguyu aşağıdaki gibi değiştirelim:
SELECT * FROM personel WHERE isim='Ahmet' OR isim='Mehmet'
Değiştirmiş olduğumuz sorgunun Türkçesi adı ‘Ahmet’ veya adı ‘Mehmet’ olanlar şeklinde ifade edilir. Bu sorgunun sonucu aşağıdaki gibidir:
| per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
|---|---|---|---|---|---|---|---|
| 1 | Ahmet | Yılmaz | 20 | E | Ankara | Türkiye | 2000 |
| 2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
2- Yaşı 30’dan büyük ve erkek veya yaşı 25’ten küçük ve kadın olanlar:
SELECT * FROM personel WHERE ( yas > 30 AND cinsiyet= 'E' ) OR ( yas < 25 AND cinsiyet= 'K' )
Sorgudaki parantezlere ve sorgunun aşağıdaki sonucuna dikkat:
| per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
|---|---|---|---|---|---|---|---|
| 3 | Ayşe | Can | 23 | K | İstanbul | Türkiye | 2500 |
| 5 | John | Smith | 45 | E | New York | ABD | 3500 |
| 8 | Frank | Cesanne | 35 | E | Paris | Fransa | 3700 |
3- Yaşı 30’dan büyük veya Ankara’da oturan ve maaşı 2500’den büyük veya kadın olanlar:
SELECT * FROM personel WHERE ( yas > 30 OR kent= 'Ankara' ) AND ( maas > 2500 OR cinsiyet= 'K' )
Yukarıdaki 2 parantezin her birindeki 2 sorgudan en az birine uyan kayıtlar bu sorgunun sonucunu oluşturur. Örneğin ilk parantezdeki yaş koşulu tutan yani yaşı 30’dan büyük olan bir kayıtın ikinci parantezden de en az bir koşula uyması gerekiyor ki aşağıda yer alabilsin.
Aşağıdaki sonuç kümesini incelediğinizde yukarıdaki sorguyu daha iyi anlayacaksınız:
| per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
|---|---|---|---|---|---|---|---|
| 4 | Fatma | Ak | 35 | K | Ankara | Türkiye | 2800 |
| 5 | John | Smith | 45 | E | New York | ABD | 3500 |
| 6 | Ellen | Smith | 40 | K | New York | ABD | 3000 |
| 8 | Frank | Cesanne | 35 | E | Paris | Fransa | 3700 |
Hiç yorum yok:
Yorum Gönder