Alan boşsa başka sorgu doluysa başka sorgu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Alan boşsa başka sorgu doluysa başka sorgu

Mesaj gönderen ALUCARD »

Arkadaşlar aşağıdaki resimdeki bir tablom var.
önemli olan iki alanım var. UNVAN ve BRANS alanlarım var. UNVAN alanım herzaman dolu ama BRANS alanım bazen dolu bazen de boş.

bu tabloya bağlı sorgu yapıyorum. daha doğrusu bu alanlara göre personeli sayıyorum. Eğer sadece UNVAN alanı dolu ise sorun yok. Ama Her iki alan doru ise hem UNVAN hemde Bransa göre saymam gerekiyor.

Kod: Tümünü seç

select n.*,
(select COUNT(*) FROM TBL_PERSONEL P WHERE P.kadrokurumid=N.kurumid AND P.kadrounvan=N.unvanid) as asda
 FROM VIEW_NORMKADROLAR N
bu sql koduna where den sonraki kısmına şöyle demem lazım Eğer brans alanı dolu ise

P.kadrounvan=N.unvanid and p.kadrobrans=n.bransid

bunu nasıl yapabilirim.

Resim
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Alan boşsa başka sorgu doluysa başka sorgu

Mesaj gönderen freeman35 »

"case" kullanabilirsin.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1269
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Re: Alan boşsa başka sorgu doluysa başka sorgu

Mesaj gönderen ALUCARD »

hocam çok denedim ama yazamadım kısa bir örnek yazarmısın
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Alan boşsa başka sorgu doluysa başka sorgu

Mesaj gönderen freeman35 »

...\Firebird_3_0\doc\sql.extensions\README.case.txt
burada detay açıklaması var. yani firebird ü kurduğun yerin altında. 2.5 serisindede olması gerekiyordu, yanılmıyorsam.

Kod: Tümünü seç

select n.*,
(CASE
 WHEN (N.unvanid IS NULL) THEN (select COUNT(*) FROM TBL_PERSONEL P WHERE P.kadrokurumid=N.kurumid) 
 ELSE (select COUNT(*) FROM TBL_PERSONEL P WHERE P.kadrokurumid=N.kurumid AND P.kadrounvan=N.unvanid)
 END) as asda
 FROM VIEW_NORMKADROLAR N
bu case i de view içine eklersen daha iyi olur, yani view dan gelen sonuç üzerinde işlem yapmaktansa, server üzerinde view oluşturulurken yani sql sonucu hazırlanırken bu işlemide serverda yaptırmak daha mantıklı.
kolay gele.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla