Select ten Sonra İf Kullanımı

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
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Select ten Sonra İf Kullanımı

Mesaj gönderen ademcicek »

Merhaba arkadaşlar.Firebird veritabanını kullanıyorum.computed by bir field tanımlayacam.abone tablosundan EVSAHIPAD ve KIRACIAD fieldlarını duruma göre kullanacam.eğerki Kiracıad boş veya null sa evsahibiad yeni fieldin değeri olacak.ben bir şeyler salladım ama olmadı.aşağıdaki gibi bir kullanım varmı firebird de.

Kod: Tümünü seç

SELECT if (KIRACIAD)='' or (KIRACIAD IS NULL) then,EVSAHIPAD FROM ABONESU WHERE  SICILID=FATURASU.SICILID 
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

sallayacağına arasaydın ya hocam :wink:

Kolay gelsin.
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

aradım hocam.benim gördüm başlıklardan if kullanımyla ilgi örnekler hep whereden sonra.ondan sordum burada
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

genel kullanılımı yazayım ben, Firebird'te denemedim :

select AD=(if (KIRACIAD IS NULL) then EVSAHIBIAD else if 1=1 then KIRACIAD endif endif)

Kolay gelsin.
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Kod: Tümünü seç

SELECT COALESCE (kiraciad, evsahibiad, 'TANIMSIZ')
  FROM abonesu
 WHERE sicilid = faturasu.sicilid
bu fonksiyon oldukça kullanışlı ve tam da bu iş için.

Kolay gelsin.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

hocam harikasın.
çok teşekür ederim
kolay gelsin.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

select içinde case de kullanılabiliyor, if ile yapılan işin aynısı

bkz. viewtopic.php?t=6942&highlight=case+firebird
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

COALESCE function ile > < gibi operatörler kullanamıyorsun. Eşitlik sorgulamak istiyorsan birebir.
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

@doğanzorlu kardeşin gönderdiği sql çok güzel ama.ben o kodla computed by field oluşturamadım.benim burada yapacağım işlem computed by da çalışmalı.

kolay gelsin.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

case computed alanlarda çalışıyor. aslında coalesce'in de çalışması lazım. ilginç...
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Kod: Tümünü seç

SELECT COALESCE (kiraciad, evsahibiad, 'TANIMSIZ') as adi
  FROM abonesu 
 WHERE sicilid = faturasu.sicilid
şeklinde alana bir isim vererek dener misiniz ? CASE le birlikte if ve nullif de kullanabilirsiniz ama bu işlem için ideal olanı bu verdiğim fonksiyondur... Nullif ise şu şekilde;

Kod: Tümünü seç

SELECT NULLIF (NULLIF (kiraciad, evsahibiad), 'TANIMSIZ') AS adi
  FROM abonesu
 WHERE sicilid = faturasu.sicilid
İçteki null if le eğer kiraciad null sa evsahibiad kullanılır. Dıştakinde evsahibiad da null sa 'TANIMSIZ' kullanılsın demektir. Dikkat edilecek husus NULLIF in tüm db lerde desteklenmediğidir. Fakat diğer db için benzer şeyler vardır. Misal oracle için NVL gibi. COALESCE ise ORACLE, FireBird ve MS SQL Server (tam emin değilim) da destekleniyor.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

Kod: Tümünü seç

(SELECT COALESCE (KIRACIAD, EVSAHAHIPAD, 'TANIMSIZ') as ADDD FROM ABONENO WHERE UID = FATURASU.ABONEID)
hata da aşağıdaki

Kod: Tümünü seç

fmCompile.quCompile:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, char 81.
as.
ademcicek
Üye
Mesajlar: 409
Kayıt: 03 Eki 2003 01:50
Konum: Ankara

Mesaj gönderen ademcicek »

Arkadaşlar yanlış yazmışım ondan çalışmamış.özür dilerim.çok harika bir sql..

çok teşekür ederim.
Cevapla