none
SQL Gelmeyen veride değer döndürme RRS feed

  • Soru

  • Selamu Aleyküm

    Arkadaşlar tablodan sadece tek bir hücre çeken bir SQL sorgum var.

    SELECT Ad FROM Kisi WHERE ID = 10

    Birincil anahtar değeri 10 olan bir kayıt yok ise Ad kolonunda sıfır hücre olacaktır. 'Eğer Ad kolonunda sıfır hücre var ise bir hücre ekle, değerini X yap' komutunu vermek istiyorum.

    Şimdiden Teşekkürler.


    25 Temmuz 2014 Cuma 13:57

Yanıtlar

  • Ne fark eder ki? Sen ilkini al gec. Eklemek istersen alti ustu bir TOP 1. Fazla basit seyleri istiyorsun:)

    SELECT TOP 1 * 
    FROM (
    Select < tekHucre > AS xx from tabloadi AS c where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0) t

    • Yanıt Olarak İşaretleyen Azad İrven 93 25 Temmuz 2014 Cuma 15:34
    25 Temmuz 2014 Cuma 14:38
  • Ne fark eder ki? Sen ilkini al gec. Eklemek istersen alti ustu bir TOP 1. Fazla basit seyleri istiyorsun:)

    SELECT TOP 1 * 
    FROM (
    Select < tekHucre > AS xx from tabloadi AS c where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0) t

    Doğru söylüyorsunuz :). Fakat sorgunuz (mantıken doğru ama) sadece 0 değerini döndürmektedir.

    Sorguya ihtiyacı olan kimseler için:

    SELECT TOP 1 * FROM (SELECT KOLONADI FROM TABLO WHERE KOLONADI = 100 UNION SELECT 0) t ORDER BY KOLONADI DESC

    fakat bu sorgu azalan sırada değerleri sıralamaktadır. Bu geçici bir çözümdür. Soruma yanıt verebilecek kimseler vardır umarım :)

    Şimdiden teşekkürler.


    25 Temmuz 2014 Cuma 15:08
  • Cevap verildi zaten.
     Alternatif:

    WITH cte ( myField )
    AS ( SELECT myField FROM tabloAdi WHERE 1=1)
    SELECT  CASE WHEN EXISTS ( SELECT * FROM cte) 
    THEN (SELECT TOP 1 * FROM cte)
    ELSE (SELECT  0)
    END

    • Düzenleyen CetinBasoz 27 Temmuz 2014 Pazar 12:43
    • Yanıt Olarak İşaretleyen Azad İrven 93 1 Ağustos 2014 Cuma 11:54
    27 Temmuz 2014 Pazar 12:31

Tüm Yanıtlar

  • SELECT ISNULL(KOLONADI,0) FROM TABLENAME


    Mail Gönder

    25 Temmuz 2014 Cuma 14:02
  • SELECT ISNULL(KOLONADI,0) FROM TABLENAME


    Mail Gönder

    malesef çalışmadı.
    25 Temmuz 2014 Cuma 14:14
  • Tek hucre dedigin sayisal mi? Oyleyse:

    Select < tekHucre > from tabloAdi where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0


    • Düzenleyen CetinBasoz 25 Temmuz 2014 Cuma 14:15
    25 Temmuz 2014 Cuma 14:15
  • Tek hucre dedigin sayisal mi? Oyleyse:

    Select < tekHucre > from tabloAdi where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0


    sorgunuz çalışmaktadır. Fakat şu kısım var: 'eğer sonuç döndürüyorsa 0 değerli bir hücre eklemesin' şartı yok.
    25 Temmuz 2014 Cuma 14:34
  • Ne fark eder ki? Sen ilkini al gec. Eklemek istersen alti ustu bir TOP 1. Fazla basit seyleri istiyorsun:)

    SELECT TOP 1 * 
    FROM (
    Select < tekHucre > AS xx from tabloadi AS c where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0) t

    • Yanıt Olarak İşaretleyen Azad İrven 93 25 Temmuz 2014 Cuma 15:34
    25 Temmuz 2014 Cuma 14:38
  • Ne fark eder ki? Sen ilkini al gec. Eklemek istersen alti ustu bir TOP 1. Fazla basit seyleri istiyorsun:)

    SELECT TOP 1 * 
    FROM (
    Select < tekHucre > AS xx from tabloadi AS c where 1=2 -- sonuc dondurmeyene ornek
    union
    Select 0) t

    Doğru söylüyorsunuz :). Fakat sorgunuz (mantıken doğru ama) sadece 0 değerini döndürmektedir.

    Sorguya ihtiyacı olan kimseler için:

    SELECT TOP 1 * FROM (SELECT KOLONADI FROM TABLO WHERE KOLONADI = 100 UNION SELECT 0) t ORDER BY KOLONADI DESC

    fakat bu sorgu azalan sırada değerleri sıralamaktadır. Bu geçici bir çözümdür. Soruma yanıt verebilecek kimseler vardır umarım :)

    Şimdiden teşekkürler.


    25 Temmuz 2014 Cuma 15:08
  • Cevap verildi zaten.
     Alternatif:

    WITH cte ( myField )
    AS ( SELECT myField FROM tabloAdi WHERE 1=1)
    SELECT  CASE WHEN EXISTS ( SELECT * FROM cte) 
    THEN (SELECT TOP 1 * FROM cte)
    ELSE (SELECT  0)
    END

    • Düzenleyen CetinBasoz 27 Temmuz 2014 Pazar 12:43
    • Yanıt Olarak İşaretleyen Azad İrven 93 1 Ağustos 2014 Cuma 11:54
    27 Temmuz 2014 Pazar 12:31