Originally Posted by: Sumer2003 Mehmet hocam;
sorguyu;
select * from HumanResources.Employee
where OrganizationLevel <= 2 and OrganizationLevel >= 4 olarak çalıştırdığımızda sonuç alamıyoruz, hatada vermiyor.
Ancak,
select * from HumanResources.Employee
where OrganizationLevel <= 4 and OrganizationLevel >= 2 şeklinde yapar isek listeleme yapıyor.
Başka bir sorgu olan
select * from HumanResources.Employee
where MaritalStatus = 'S' and Gender = 'F' and OrganizationLevel = 2 or OrganizationLevel = 3
Sadece OR koşulu ile verilen değerleri doğru getiriyor. Diğer kolonlar karışık.
Videoda da karışık geliyor, üstelik Gender = 'S' olduğu halde. Tabloda Gender da 'S' verisi bulunmamakta.
Nedenini öğrenebilirmiyim.
Merhabalar
ilk sorguda
OrganizationLevel <= 2 and OrganizationLevel >= 4
sonuç gelmez neden ? çünkü sql where koşulunda sıraya göre çalışır, ilk yazdıgınız koşula göre OrganizasyonLevel 1 den başlıyorsa en fazla 1 ve 2 olanlar gelicek, ikinci koluşa geline kadar elimizde sadece 1 ve 2 kaldı , 2. koşulda ise 4 ve büyükleri istiyorsun , elinde 1 ve 2 oldugu için doğal olarak sonuç dönmüyor
2. sorguda
OrganizationLevel <= 4 and OrganizationLevel >= 2
4 ve 4 den küçükleri alıyorsun yani 1,2,3,4 sonraki koşulda ise 2 ve 2 den büyükleri alıyorsun yani 2,3,4,5,6..... kesistikleri nokta 2,3,4
sadece bunlar gelir
3. sorguda
or çok tehlikelidir,
MaritalStatus = 'S' and Gender = 'F' and OrganizationLevel = 2 or OrganizationLevel = 3
yukarıdaki sorgunun 2 farklı sonuç kümesi döndürecektir,
bir or a kadar olan kısmı bir de or dan sonraki kısmı sonra bu 2 sonuç kümesini birleştirecektir,
ilk kısmı alalım
MaritalStatus = 'S' and Gender = 'F' and OrganizationLevel = 2
yukarıdaki kriterlere uyan biri varsa getirir yoksa getirmez,
diğer kısım olan or ise
or OrganizationLevel = 3
kendinden önce ne gelip ne gelmediğini hiç önemsemez direk olarak organizasyonlevel 3 olanlar gelir, o yüzden sizin ilk kriteriniz ile alakasız sonuçları döner