Re: Mümkün mü? Subquery in Subquery

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.

In response to

Browse pgsql-tr-genel by date

  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