cara insert table select dari table lain di mysql

Setelah sekian lama tidak posting di blog, akhirnya bisa posting juga..

sebenarnya saya janji kalo masalah ini berhasil akan saya postingkan ke blog hihi..

ok..langsung aja ke TKP.

Story dulu ya : ceritanya saya sedang bikin aplikasi sms nilai di sekolah yang bisa autorespon jadi ketika siswa mengirim sms dengan format => "NILAINIS" maka aplikasi akan otomatis menjawab daftar nilai sesuai nis yang diinputkan, kemudian saya buat triggernya. dalam trigger ada 3 tabel yang terhubung iantaranya :
1. tabel matapelajaran
2. tabel nilai
3. tabel outbox

nah, dalam trigger saya ingin memasukkan data dari tabel matapelajaran dan nilai ke outbox. dengan isi data sebanyak yang dimiliki NIS.

coba dilihat trigger pertama yang saya buat :
delimiter $
create trigger
nilai
AFTER
INSERT
ON
sister.inbox
for each row begin

if SUBSTRING(NEW.TextDecoded,1,5)= "NILAI" then
insert into sister.outbox(DestinationNumber,TextDecoded) values(NEW.SenderNumber,(select concat(matapelajaran,'=',nilai) from matapelajaran as m,nilai as n where nis=SUBSTRING(NEW.TextDecoded,7) and m.kode_matpel=n.kode_matpel));
end if;

END;
$

ketika di test di console mysql ternyata error "SUBQUERY RETURN MORE THAN 1 ROWS"

kunaon nya ieu...ooh ternyata lihat pada select concat(matapelajaran,'=',nilai) from matapelajaran as m,nilai as n where nis=SUBSTRING(NEW.TextDecoded,7) and m.kode_matpel=n.kode_matpel). Query ini akan menghasilkan 12 Rows, karena emang matapelajaran nya ada 12. jadi intinya mysql tidak bisa memasukan data lebih dari 1 rows ke tabel...naaahh ini dia nih!!

setelah beberapa hari saya mencari2..akhirnya iseng-iseng buka modul Praktikum Database yang ngdownload dari situs dosen yang bernama Bapak Andri Heryandi, ST. MT. disitu dijelaskan bahwa semua data tersebut bisa digabungkan menjadi string..awawawawaw 12 baris menjadi 1baris. mantaaappp...

coba lihat lagi Query yang berhasil :
select group_concat(matapelajaran,'=',nilai) from matapelajaran as m,nilai as n where nis=SUBSTRING(NEW.TextDecoded,7) and m.kode_matpel=n.kode_matpel).

oohh...ternyata group_concat solusinya he..

group_concat ini berfungsi menggabungkan menjadi String. kalo dalam php bisa di bilang convert array to string (tapi array nya dari database).

Alhamdulilah...


EmoticonEmoticon