From: | Volkan YAZICI <volkan(dot)yazici(at)gmail(dot)com> |
---|---|
To: | ALÝ ÇELÝK <ali(at)verus(dot)com(dot)tr> |
Cc: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: Mümkün mü? Subquery in Subquery |
Date: | 2005-10-29 10:23:41 |
Message-ID: | 7104a7370510290323u615dbaf0t8037cd5470af05e6@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Merhaba,
On 10/28/05, ALÝ ÇELÝK <ali(at)verus(dot)com(dot)tr> wrote:
> (1,2,3) in (1,2,3,4,5,6,7,8,9,10) işlevini görecek bir where koşulu
> yazılabilir mi? Soldaki elemanladan herhangi birinin sağdaki
> dizide/subquery'de bulunması true olacak şekilde.... (1 in (..) or 2 in
> (..) or 3 in (..)) bunun daha pratik bir yolu... eğer varsa birde and lisi
> var mı? Yani soldaki elemanların hepsinin sağdaki subquery'de bulunması
> kontrolü.
Sorunuzu tam olarak anlayamadım. Şimdi soldaki ifade bir dizi mi,
yoksa subquery mi olacak? Çünkü dizi demişsiniz ama (1, 2, 3)
yazmışsınız. Benim bildiğim kadarı ile ARRAY[1, 2, 3] diziye, (1, 2,
3) ise sonuç satırına karşılık geliyor.
Eğer her ikisi de dizi olcaksa iş basit:
-- Tutarım ben bazen,
-- Kulağımı böyle tersten.
CREATE FUNCTION in_array(inp integer[], arr integer[]) RETURNS bool AS $$
DECLARE
inp_lo integer;
inp_hi integer;
arr_lo integer;
arr_hi integer;
stat bool;
BEGIN
inp_lo = replace(split_part(array_dims(inp), ':', 1), '[', '')::int;
inp_hi = replace(split_part(array_dims(inp), ':', 2), ']', '')::int;
arr_lo = replace(split_part(array_dims(arr), ':', 1), '[', '')::int;
arr_hi = replace(split_part(array_dims(arr), ':', 2), ']', '')::int;
-- Bu AND operatörlüsü.
FOR i IN inp_lo..inp_hi LOOP
stat := FALSE;
FOR j IN arr_lo..arr_hi LOOP
IF inp[i] = arr[j] THEN
-- OR için alttaki iki satır yerine direk RETURN TRUE deyiverin.
stat := TRUE;
EXIT;
END IF;
END LOOP;
IF stat != TRUE THEN
RETURN FALSE;
END IF;
END LOOP;
RETURN TRUE;
END;
$$ LANGUAGE plpgsql;
Yok subquery olacaksa, karşılaştırmayı subquery'nın satırlarına mı,
yoksa sütunlarına mı bakarak gerçekleştireceğiz? Ben biraz kıtımdır.
Soruyu azıcık daha açarsanız sevinirim.
İyi çalışmalar.
P.S. Problem hafif ENUM tipine kayıyor gibi. Eğer öyleyse...
Çalışmalar devam ediyor.
From | Date | Subject | |
---|---|---|---|
Next Message | Devrim GUNDUZ | 2005-10-31 06:59:43 | PostgreSQL Haftalık Haber Bülteni |
Previous Message | AL ELK | 2005-10-28 19:42:11 | Mmkn m? Subquery in Subquery |