Hocam en hızlı yöntem a,b,c,d,e içeren hafızada bir temp tablo yaratıp,
değerleri buna girip, left join ile asıl tablonuzla birleştirmek olur. if,
case, vs ile de uğraşmayın, aradığınız anahtar kelime COALESCE, kullanımı
şöyle;
-- Hafızada geçici bir tablo yaratalım.
CREATE TABLE `test`.`cols` (
`a` VARCHAR( 10 ) NOT NULL
) ENGINE = MEMORY;
-- Geçici tablomuza kolon isimlerini girelim.
INSERT INTO cols VALUES ('a'),('b'),('c'),('d'),('e');
-- İki tabloyu LEFT JOIN ile öpüştürüp, karşılığı yoksa YOK yazalım.
SELECT cols.a AS code, COALESCE(test.amount, 'YOK') AS amount FROM cols
LEFT JOIN test ON cols.a = test.code ORDER BY cols.a;
-- İşimiz bitince gereksiz tabloyu öldürelim.
DROP TABLE cols;
Kolay gelsin.
11 Aralık 2012 16:23 tarihinde Zekeriya Bozkurt <[email protected]>yazdı:
> şöylebir sql işinizi görebilir sanırım.'YOK ' YERİNE SIFIR değerini
> koydum. 'YOK' alfasayısal normal değerler sayısal olduğundan.
>
> SELECT A1.CODE, ISNULL(A2.AMOUNT,0) FROM TABLO1 A1
> LEFT OUTER JOIN TABLO1 A2 ON (A1.CODE=A2.CODE)
>
> ya da işi biraz daha kasıp şöyle bir SQL yazabilirsin.
>
> SELECT SELECT A1.CODE, CASE ISNULL(A2.AMOUNT) WHEN 'YOK' ELSE CAST(AMOUNT
> AS VARCHAR(10)) END FROM TABLO1 A1
> LEFT OUTER JOIN TABLO1 A2 ON (A1.CODE=A2.CODE)
>
> ------------------------------
> From: [email protected]
> Date: Mon, 10 Dec 2012 23:17:55 +0200
> To: [email protected]
> Subject: [Linux-programlama] sql'de basit bir sorgu için yardım
>
>
> Arkadaşlar merhaba,
>
> Çok kolay bir soru olabilir, ama nasıl yapacağım şu anda aklıma gelmedi.
> Yardımcı olabilir misiniz, teşekkürler.
>
> SQL'in condition kısmında yazdığımız değerler eğer tabloda bulunmuyorsa,
> bunların karşısında 'YO K' yazacak şekilde sonuç döndürmesini istiyorum.
>
> Bunu nasıl yaparım, yardımcı olabilir misiniz?
>
>
> Örnekle açıklayacak olursak, Tablo1 şöyle olsun:
>
> *code* *amoun*t
> b 5
> c 10
> e 12
>
> Örnek sorgu şöyle birşey:
> select * from tablo1 where CODE IN ('a', 'b', 'c', 'd', 'e')
>
> Sonucun aşağıdaki gibi çıkmasını istiyorum:
>
> a YOK
> b 5
> c 10
> d YOK
> e 12
>
> _______________________________________________ Linux-programlama mailing
> list [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste
> kurallari: http://liste.linux.org.tr/kurallar.php
>
> _______________________________________________
> Linux-programlama mailing list
> [email protected]
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>
>
--
Omer Barlas
[email protected]
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php