case ile sorgulama problemi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
ahmetcaydere
Üye
Mesajlar: 6
Kayıt: 18 Mar 2005 02:50
Konum: ISPARTA
İletişim:

case ile sorgulama problemi

Mesaj gönderen ahmetcaydere »

aşağıdaki yazdığım view de 60000 kayıtta sadece 114 tanesini getiriyor..
bu sorgudaki case ifadelerini kaldırdığımda oluşan view de 60000 kaydı görebiliyorum bunu sebebi acaba CASE ifadesinde mi?

Sevgiler Saygılar.....

Sorgu bu.....
********************************************************
CREATE VIEW FATURA_VIEW(
STOK_REF,
SKOD,
CINSI,
TURU,
TARIH,
FIYAT,
ISK)
AS
SELECT
FATURA.STOK_REF,
FATURA.SKOD,
FATURA.CINSI,
(SELECT TURU FROM TURLER WHERE TURLER.REFNO=FATURA.turu_ref),
FATURA.TARIH,
FATURA.FIYAT,
((CASE
WHEN (FATURA.FIYAT IS NULL) THEN 0 ELSE FATURA.FIYAT END)-
(CASE
WHEN (FATURA.SATISK IS NULL) THEN 0 ELSE FATURA.SATISK/FATURA.MIKTAR END)-
(CASE
WHEN (FATURA.NETISK IS NULL) THEN 0 ELSE FATURA.NETISK END)-
(CASE
WHEN (FATURA.NETISK1 IS NULL) THEN 0 ELSE FATURA.NETISK1 END))

FROM FATURA
;
***********************************************************
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

CASE sorun çıkartmaz. Ancak CASE'li işlemlerde bölme işlemi yaparken bölenin sıfır olup olmamasını da kontrol etmelisin. Yani:

Kod: Tümünü seç

CASE WHEN (FATURA.SATISK IS NULL) THEN 0 ELSE FATURA.SATISK/FATURA.MIKTAR END

yerine

CASE WHEN FATURA.SATISK IS NULL OR COALESCE(FATURA.MIKTAR, 0) = 0 THEN 0 ELSE FATURA.SATISK / FATURA.MIKTAR END
yazman daha uygun olacaktır. Belki de sorun buradadır.

İyi çalışmalar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
null kontrollerde case yerinde coalasce (umarım yanlış yazmadım) kullanman daha iyi olur kanaatindeyim.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Hocam tabloda rakamsal alanlara 0 ilk değerini verirsen daha sorunsuz ve rahat çalışırsın. (Default Source)
Cevapla