Oke, Thanks.
gw gak kepikiran kayak gitu.. ya...
awalnya loe mikirnya gimana sih bisa tahu, tapi thanks banget,
gw tdnya malah mikir function buat nampilin listnya dulu baru bikin function
sortnya
eloe malah cuma 1 function pendek.. lagi..
yach tinggal gw taruh deh implementasinya...
thanks lagi..
On 4/18/07, Awaluddin Hamid <[EMAIL PROTECTED]> wrote:
>
> Disorting pake function aja
>
> SQL> CREATE TABLE kel (
> 2 who VARCHAR2(1),
> 3 parent VARCHAR2(1),
> 4 no NUMBER(3));
> Table created.
>
> SQL> INSERT INTO kel VALUES ('A',NULL,1);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('B','A',1);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('C','A',2);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('D','B',1);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('E','B',2);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('F',NULL,2);
> 1 row created.
> SQL> INSERT INTO kel VALUES ('G','F',1);
> 1 row created.
>
> SQL> CREATE OR REPLACE FUNCTION order_kel(v_who IN VARCHAR2) RETURN
> VARCHAR2 IS
> 2 v_parent VARCHAR2(1);
> 3 v_no NUMBER(3);
> 4 t_no VARCHAR2(10);
> 5 t_who VARCHAR2(1);
> 6 v_stat BOOLEAN;
> 7 n NUMBER(3);
> 8
> 9 BEGIN
> 10 t_no := '';
> 11 t_who := v_who;
> 12 v_stat := TRUE;
> 13 n := 0;
> 14 WHILE v_stat LOOP
> 15 SELECT parent,no INTO v_parent,v_no FROM kel WHERE who = t_who;
> 16 t_no := v_no||n||t_no;
> 17 IF v_parent IS NULL THEN
> 18 v_stat := FALSE;
> 19 END IF;
> 20 t_who := v_parent;
> 21 n := n + 1;
> 22 END LOOP;
> 23 RETURN t_no;
> 24 END;
> 25 /
> Function created.
>
> SQL> SELECT who FROM kel ORDER BY order_kel(who);
> W
> -
> A
> B
> C
> D
> E
> F
> G
> 7 rows selected.
>
> hth,
> AWAL
>
>
> dedy afriyanto wrote:
> >
> > Problem
> > ------------
> > saya punya tabel
> >
> > TABEL KELUARGA : WHO , PARENT, NO
> >
> > sekarang saya mau menampilkannya secara terurut ( berdasarkan no, dan
> > parent
> > )
> > bagaimana caranya??
> >
> > jadi semisal
> >
> > WHO PARENT NO
> > A 1
> > B A 1
> > C A 2
> > D B 1
> > E B 2
> > F 2
> > G F 1
> >
> > Kebetulan saja datanya udah di insertnya secara terurut kalau tidak
> > bagaimana??
> >
> > OUTPUT
> > ------------
> > A
> > B
> > C
> > D
> > E
> > F
> > G
> >
> > Trima Kasih
> >
> > [Non-text portions of this message have been removed]
> >
> >
>
>
>
[Non-text portions of this message have been removed]