• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

boş alan sorgusu

Katılım
17 Ocak 2006
Mesajlar
241
Excel Vers. ve Dili
excel xp türkçe
select *
from Ziyaret_Tablo
where
aciklama IS NULL or
aciklama2 IS NULL or
aciklama3 IS NULL or
aciklama4 IS NULL and

persadisoyadi='müge derin'


merhaba

amacım o personele ait 4 açıklaması boş olanları getirsin 4 açıklamada doluysa getirmesin


mantığımı yukarıdaki sorguya göre tasarladım ama tüm personellere göre getiriyor.


yardımcı olurmusunuz?
 
Merhaba


Açıklamalardan herhangi biri NULL ise ismi c olan verileri getir

select *
from Ziyaret_Tablo
where
WHERE (persadisoyadi='c')AND(ACIKLAMA1 IS NULL) OR (ACIKLAMA2 IS NULL)

Eğer


açıklamaların hepsi NULL ise verileri getirsin diyorsanız

select *
from Ziyaret_Tablo
where
WHERE (persadisoyadi='c')AND(ACIKLAMA1 IS NULL) AND (ACIKLAMA2 IS NULL)





Tablonuza baktınızmı değerler NULL mu boşta olabilir.
 
Son düzenleme:
bu şekilde de olmuyor

durum şöyle personelin doktorlarına 4 kere gitme şartı var.

3 kere gitse bile 1 kere daha gitmesi gerekiyor ve gidimesi gerekenler listesinde lması gerekiyor.

ama bu sorguda 4 ziyaretten birine gitse bile hepsine gidilmiş gibi listede göstermiyor. benimde takıldığım şey o zaten.
 
Merhaba

Aşağıdaki gibi istemiyormusunuz

SOYADI, DOĞUM YILI,ÖDEME ve DÖNEMİ

ACK1,ACK2,ACK3,ACK4 gibi düşünün

sql query.jpg
 
Son düzenleme:
sizde sadece C C kayıtlı lduğu için o şekilde


görüntüyü ekranda gösteriyorum.

bence bu Or dan olabilirmi. şükrü personeli dediğim halde şükrü hariç diğer personeller geliyor. şürüyüde aciklama yazdıüım için göstermiyor. daha önceden gösteriyordu.
 

Ekli dosyalar

  • deneme.jpg
    deneme.jpg
    95.1 KB · Görüntüleme: 14
Merhaba


Burada WHERE (persadisoyadi='c')AND(ACIKLAMA1 IS NULL) OR(ACIKLAMA2 IS NULL)

olduğunda Personel adı c olan ve açıklama1 NULL olan personelle
birlikte
Acıklama2'si NULL olan diğer bütün personeli getiriyor.

Küçük bir Views hazırlayabilir veya tablo üzerindende bakabilirsiniz.



Kendinize uyarlayabilirmisiniz.


Kod:
SELECT   *
FROM         DENEME1
WHERE     (ADI = 'c c') AND (DONEM IS NULL) OR
                      (ADI = 'c c') AND (ODEME IS NULL) OR
                      (ADI = 'c c') AND (DOGUM_YILI IS NULL) OR
                      (ADI = 'c c') AND (SOYADI IS NULL)

sql2.jpg
 
Son düzenleme:
Bu kodla bir tanesi bile boş olursa rapora alır.

Kod:
select *
from Ziyaret_Tablo
where
((CASE WHEN aciklama IS NULL THEN 'X' ELSE '1' END)
+(CASE WHEN aciklama2 IS NULL THEN 'X' ELSE '1' END)
+(CASE WHEN aciklama3 IS NULL THEN 'X' ELSE '1' END)
+(CASE WHEN aciklama4 IS NULL THEN 'X' ELSE '1' END)) LIKE '%X%'
AND 
persadisoyadi='müge derin'


Bu kodla LIEK tan sonra 3. karakter X olduğu için 3. yanı acıklama 3 alanı null ise rapora alır
"X" hangi kademede ise o acıklama boş ise gibi düşüne bilirsiniz.

Kod:
select *
from Ziyaret_Tablo
where
((CASE WHEN aciklama IS NULL THEN 'X' ELSE 'Y' END)
+(CASE WHEN aciklama2 IS NULL THEN 'X' ELSE 'Y' END)
+(CASE WHEN aciklama3 IS NULL THEN 'X' ELSE 'Y' END)
+(CASE WHEN aciklama4 IS NULL THEN 'X' ELSE 'Y' END)) LIKE '__X_'
AND 
persadisoyadi='müge derin'


Başka bir bakış acısı
NULL olan her acıklama alanı için "X" Karakteri atacak. "LEN" fonksiyo ile bu karakterlersi sayarsanız 0 kadarter olursa o zaman tüm alanlar doludur demektir. Rapor almassınız

Yada 3 IS NOT NULL Deyip karakter saydırısanız.
4 karakterliler tümüne gimiş
3 karakterlile 3 ünü gitmiş gibi....

Kod:
select *
from Ziyaret_Tablo
where
LEN(
(CASE WHEN aciklama IS NULL THEN 'X' ELSE '' END)
+(CASE WHEN aciklama2 IS NULL THEN 'X' ELSE '' END)
+(CASE WHEN aciklama3 IS NULL THEN 'X' ELSE '' END)
+(CASE WHEN aciklama4 IS NULL THEN 'X' ELSE '' END))
) <> '0'
AND 
persadisoyadi='müge derin'

Saygılar.
 
Geri
Üst