Bro, gw mau nanya nih. Misalnya gw ada table gini :
Code:
nama | nama_mantan_cewek
----------------------------
paijo | intan
paijo | dewi
koplo | tyas
koplo | andin
paijo | yeta
paijo | inem
nah, dari table itu gw mo bikin tabel baru dengan hasil gini :
Code:
nama | nama_mantan_cewek
-----------------------------
paijo | intan,dewi,yeta,inem
koplo | tyas,andin
kira2 gmana ya bro caranya? jangan bilang sorting manual, karena data aslinya bisa mencapai 10 juta record. Thx sebelumnya.
NB:melon menanti
CASE CLOSED!!!
Thx bwat bro postthink atas jawabannya. melon sudah dikirim.
Spoiler for
berikut jawabannya:
Code:
CREATE TABLE TABEL1
(
NAMA VARCHAR2(2000 BYTE),
NAMA_MANTAN_CEWEK VARCHAR2(2000 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
CREATE TABLE TABEL2
(
NAMA VARCHAR2(2000 BYTE),
NAMA_MANTAN_CEWEK VARCHAR2(2000 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
SET DEFINE OFF;
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('paijo', 'intan');
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('paijo', 'dewi');
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('koplo', 'tyas');
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('koplo', 'andin');
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('paijo', 'yeta');
Insert into TABEL1
(NAMA, NAMA_MANTAN_CEWEK)
Values
('paijo', 'inem');
COMMIT;
lalu bikin function untuk mendapatkan nama mantan cewek
CREATE OR REPLACE FUNCTION get_mantan_cewek(nama_ in varchar2) RETURN VARCHAR2
IS
mantan_cewek varchar2(2000);
i number(10);
cursor cur is select nama_mantan_cewek from tabel1 where nama=nama_;
BEGIN
i:=1;
FOR cew in cur
Loop
if i=1 then
mantan_cewek := cew.nama_mantan_cewek;
else
mantan_cewek := mantan_cewek || ',' || cew.nama_mantan_cewek;
end if;
i:=i+1;
end loop;
return mantan_cewek;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END get_mantan_cewek;
Lalu bikin procedure untuk insert ke tabel2
CREATE OR REPLACE PROCEDURE insert_tabel2 IS
mantan varchar2(2000);
cursor cur is select distinct(nama) as nama from tabel1;
BEGIN
FOR cew in cur
Loop
mantan := get_mantan_cewek(cew.nama);
insert into tabel2 values(cew.nama,mantan);
end loop;
commit;
END insert_tabel2 ;
Jalankan procedure nya
SQL>exec insert_tabel2;
Lalu lihat hasilnya
select * from tabel2;
Kasih melon gan ya