16 March, 2009

sql_statement_delete_inner_join

salam,

masalah : delete dari 4 table dalam database dengan hanya menggunakan satu statement sahaja...

1. guna SELECT statement dulu sebab nak cari data-data bagi 4 table yang berkenaan;
select *
FROM
    nama_db.tblinvcard
    INNER JOIN nama_db.tblinv
        ON (tblinvcard.InvCardID = tblinv.InvCardID)
    INNER JOIN nama_db.tblinvdetails
        ON (tblinvdetails.InvID = tblinv.InvID)
    INNER JOIN nama_db.tblinvplacement
        ON (tblinvplacement.InvDetailsID = tblinvdetails.InvDetailsID)
where nama_db.tblinvcard.GroupID = '41'and nama_db.tblinvcard.DeptID = '61'
and nama_db.tblinv.InvTimestamp BETWEEN '1199145600' and '1230681600'
order by nama_db.tblinvdetails.Invregnum asc;
so dia akan paparkan mengikut primary key (PK) dan foreign key (FK) yang dah kita susun..bagi setiap tables, lagi satu table yang korang create kena ada data relationship lah baru boleh nak kuar data tu, kalau tak memang tak keluarlah bang hehehehe

2. buat DELETE statement sama macam statement SELECT yang kat atas tu cuma tambah sikit jer...aku warnakan dengan warna merah mana yang aku tambah tu;
delete
nama_db.tblinvcard,
nama_db.tblinv,
nama_db.tblinvdetails,
nama_db.tblinvplacement

FROM
    nama_db.tblinvcard
    INNER JOIN nama_db.tblinv
        ON (tblinvcard.InvCardID = tblinv.InvCardID)
    INNER JOIN nama_db.tblinvdetails
        ON (tblinvdetails.InvID = tblinv.InvID)
    INNER JOIN nama_db.tblinvplacement
        ON (tblinvplacement.InvDetailsID = tblinvdetails.InvDetailsID)
where nama_db.tblinvcard.GroupID = '41'and nama_db.tblinvcard.DeptID = '61'
and nama_db.tblinv.InvTimestamp BETWEEN '1199145600' and '1230681600';

so statement ini akan mendelete semua data bagi keempat-empat table yang disenaraikan;

tips penting kalau korang nak main statement delete ni;
  • backup dulu data
  • masukkan data backup tu ke dalam server development
  • test statment di atas kat dalam server development
  • kalau cun, proses di atas dah delete maklumat seperti yang kita nak barulah gunakan statement di atas ke dalam real server.
sekian,

No comments:

2020 kereta masih bersesak dijalanan!

Sehingga coretan ditulis, kereta masih melalui tol dan tiada yang berterbangan seperti yang digambarkan semasa umurku 10 tahun. Selamat Da...