alvian-cs blog

Cara Menggabungkan Dua Tabel Atau Lebih Pada PHP MySQL

Cara Menggabungkan Dua Tabel Atau Lebih Pada PHP MySQL

Penggabungan antara dua tabel sangatlah perlu, agar relationship dapat bekerja, berikut adalah cara penggabungan dua atau lebih tabel pada Bahasa Pemrograman PHP dan MySQL.

Contoh tabel user
Pada contoh kali ini, saya akan mempraktikan cara menggabungkan data siswa dengan data user yang sudah memiliki relasi dengan menggunakan perintah SQL Inner Join.

Pertama, buat dahulu databasenya, kita beri saja nama ‘db’, kemudian eksekusi query berikut pada MySql:
CREATE TABLE IF NOT EXISTS `tblsiswa` (
`NIS` varchar(15) NOT NULL,
`Nama` varchar(30) NOT NULL,
`Alamat` text NOT NULL,
PRIMARY KEY (`NIS`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Kemudian kita buat juga tabel usernya, eksekusi query berikut:
CREATE TABLE IF NOT EXISTS `tbluser` (
`Id` int(5) NOT NULL AUTO_INCREMENT,
`Username` varchar(15) NOT NULL,
`Password` varchar(15) NOT NULL,
`NIS` varchar(15) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Nah, sekarang kita isi tabelnya dengan mengeksekusi perintah INSERT ke dalam tabel user, gunakan query berikut:
INSERT INTO `tbluser` (`Id`, `Username`, `Password`, `NIS`) VALUES
(1, 'alvian', 'alvian', '11265');

Jangan lupa masukkan data ke tabel siswa, gunakan query yg ini:
INSERT INTO `tblsiswa` (`NIS`, `Nama`, `Alamat`) VALUES
('11265', 'Alvian', 'Banjarnegara');

Setelah selesai, sekarang buat file php kemudian masukkan kode skrip dibawah ini:
<?php
$server = "localhost";
$username = "root";
$password = "";
$database = "db";

mysql_connect($server,$username,$password) or die("Koneksi gagal");
mysql_select_db($database) or die("Database tidak bisa dibuka");

$Query = mysql_query("SELECT * FROM tbluser
INNER JOIN tblsiswa
ON tblsiswa.NIS = tbluser.NIS");

$RecordSet = mysql_fetch_array($Query);

echo "Profil: <br><br>";
echo "NIS: $RecordSet[NIS]<br>";
echo "Username: $RecordSet[Username]<br>";
echo "Password: $RecordSet[Password]<br>";
echo "Nama: $RecordSet[Nama]<br>";
echo "Alamat: $RecordSet[Alamat]<br>";
?>

Setelah itu coba dibuka melalui browser, maka tabel siswa dan tabel user akan menyatu dan sudah menjadi kesatuan baris data yang padahal mereka ada di tabel yang berbeda.
Hasil gabungan tabel 1 dan 2
Dalam hal implementasi, sama dengan pengambilan data (retrieve) seperti yang ada pada sebagian besar sosial media, mereka umumnya memisahkan tabel data profil dengan data user di tabel yang berbeda, untuk mencegah kerumitan data sekaligus normalisasi.

Sedangkan untuk menggabungkan tiga tabel kita cukup menambah perintah inner join lagi pada variabel Query yang ada pada sintaks PHP, contohnya begini:
SELECT * FROM tbluser
INNER JOIN tblsiswa
ON tblsiswa.NIS = tbluser.NIS
INNER JOIN blabla
ON blabla.bla = blabla.bla

begitu pun seterusnya bila kita memerlukan penggabungan lebih dari 3 tabel, maka kita cukup tambahkan perintah inner join dibawahnya lagi




32 Comments

32 comments:

  1. maksih ya mas sangat membantu

    ReplyDelete
  2. mass klo mau inptu dat kedalam tiga tabel qurynyq apa mass mohon bantuannya

    ReplyDelete
    Replies
    1. misalnya tabel itu namanya 'level' ya mas, tinggal kita tambahkan skrip dibawahnya jd spt ini:
      SELECT * FROM tbluser
      INNER JOIN tblsiswa
      ON tblsiswa.NIS = tbluser.NIS
      INNER JOIN level
      ON tbluser.ID = level.userID

      Delete
  3. Mas juragan kalau buat categori dan content berita pada tabel yang berbeda gimana ya? sya menggunakan dreamweaver...
    bisa bantu di cerahkan??

    thks

    ReplyDelete
    Replies
    1. Buat dulu tabel kategori dan tabel kontennya gan. Setelah itu buat koneksi database, buat dua halaman berbeda katakanlah 'category.php' dan 'content.php'. Trus tinggal kita lakukan 'eksekusi query' di halaman 'category.php' pada tabel kategori dan halaman 'content.php' pada tabel konten. Selebihnya tinggal di atur sendiri. Semoga membantu :)

      Delete
  4. tanya mas,, kalo join lbh dari 2 tabel tapi wherenya berdasarkan session,

    ReplyDelete
    Replies
    1. Misal nama sessionnya = 'nil'

      SELECT * FROM tbluser // tabel user
      INNER JOIN tblsiswa
      ON tblsiswa.NIS = tbluser.NIS // join ke tabel siswa
      INNER JOIN nilai
      ON nilai.kd_nilai = tblsiswa.kd_nilai //join ke tabel nilai
      WHERE nilai.kd_nilai ='$_SESSION[nil]'

      Delete
  5. gan kalo nginputnya pake form trs codingannya gmana? apa di gabungin perintah insertnya?

    ReplyDelete
    Replies
    1. Gunakan metode penginsertan biasa aja gan.

      Misal anda ingin menginputkan data berikut:

      NIS: 11000
      Username: edi
      Password: edi
      Nama: Edi
      Alamat: Cirebon

      Tinggal gunakan query secara berkala gan

      Masukkan tbluser-nya terlebih dahulu:

      INSERT INTO `tbluser` (`Id` ,`Username` ,`Password` ,`NIS`) VALUES ('0091', 'edi', 'edi', '11000');

      Baru masukkan tblsiswa-nya:

      INSERT INTO `tblsiswa` (`NIS`, `Nama`, `Alamat`) VALUES ('11000', 'Edi Suyitno', 'Cirebon');

      Secara otomatis data yang diinputkan diatas akan saling berkorelasi karena memiliki NIS yang sama

      Delete
  6. ini knp ya mas?
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\tes\view pemesanan.php on line 39

    ReplyDelete
    Replies
    1. Kemungkinan ada kesalahan di sintaks query ke tabel-nya Mba. Coba dicek lagi yah. Atau tulis disini sintaks query kamu.

      Delete
  7. Gan mau tanya, kalau misalnya saya punta data di tabel1 id, nama, alamat, telp. Di tabel2 antrian, id, nama, telp.
    Jadi alurnya si halaman akan cari data dulu di tabel1, begitu tabelnya keluar, nanti ada tombol daftar. Nah bisa ga yah ketika klik tombol daftar itu otomatis langsung input ke tabel2? Mohon pencerahannya gan, deadline tugas akhir minggu depan:((

    ReplyDelete
  8. makasih bro... sempat bingung tadi soalnya ane belum pernah nyoba lebih dari 2 dan setelah saya coba di coding saya ternyata bisa. sukses selalu... doain skripsi gw kelar ya.. hehehehe

    ReplyDelete
  9. Nyasar disini
    Tp dapet ilmu
    Maksih share nya

    ReplyDelete
  10. misalkan input namanya sama antara tabel satu dan dua .apakah bisa?
    contoh ditabel 1 ada yang namanya "username" dan di tabel 2 ada juga yang namanya "username" , untuk nampilin, bagaimana kodenya?

    ReplyDelete
    Replies
    1. gunakan aja:

      SELECT `tabel1`.`username` as `username1`, `tabel2`.`username` as `username2, *
      FROM `tabel1`
      INNER JOIN `tabel2`
      ON `tabel1`.`username` = `tabel2`.`username`

      Delete
  11. This comment has been removed by the author.

    ReplyDelete
  12. how can i update multiple table into one new table?

    ReplyDelete
    Replies
    1. You can update them per table once by once. You don't even need to use JOIN clause.

      Delete
  13. maz vian saya mao nanya inner join bisa di bikin buat tabel tracker gak?? maksud nya gini saya mau melacak sebuah PC yang di gunakan oleh orang lain nah tabel nya itu beda ada tabel data user dan tabel data CPU misal nya saya mau mencari komputer 01 nah di pencarian hasil nya akan keluar 01 user nama PC serial dan ssebagainya nah itu pakai inner join atau apa yah maaf kalau rada OOT mohon pencerahan nya thx

    ReplyDelete
  14. mas kalau seandanya saya menampilkan data di tabel satu dan dua tetapi data di tabel dua ditampilkan 2..
    Contoh.
    Tabel 1.NIP, Nama , Alamat
    Tabel 2. Jenis Kelamin, Umur , Tempat Tinggal
    yang mau di tampilkan:

    NIP, Nama, Jenis Kelamin, Umur, Tempat Tinggal

    ReplyDelete
  15. Penggunaan join untuk skrip login bagaimna ya ??
    Saya punya tabel admin, mahasiswa, dosen, staff yg masing2 berisi identitas dn username+paswordnya dn levelnya user. Saya penggunakan login multiuser (admin dn user) pengambilan username dn paswordnya dari 4 tabel yg terpisah itu bagaimna?? Terimakasih

    ReplyDelete
  16. https://stackoverflow.com/questions/52037820/result-data-from-multiple-table-codeigniter

    Tolong bantu jawab gan.. Makasih

    ReplyDelete
  17. assalamualaikum
    saya ingin minta bantuan
    saya ingin nama kecamatan yang ada di tb desa ditampilkan di tb penanganan bagaimana cara merelasikannya

    ReplyDelete
    Replies
    1. dan nama kecamatan itu relasi ke tb desa

      Delete
  18. Assalamualaikum
    Keren sekali bang,setelah membaca artikel abang saya jadi paham dan banyak dapet ilmu dan ternyata setelah saya praktekin codingannya jadi. Sukses Selalu bang,terimakasih sudah membantu saya jadi mendapat ilmu setelah berkunjung ke artikel abang ini. Kenalkan Saya Fariz Al Faiq, dari STMIK ATMA LUHUR. Dan jangan lupa kunjungi website kampus kita ya bang (https://www.atmaluhur.ac.id/)

    ReplyDelete
  19. haiii Kak salken yahh, keren banget artikelnya aku jadi lebih ngerti buat belajar codingan di artikel ini dan sangat membantu juga bgi para pelajar yg pengen bljr untuk menggabungkan data lebih dri satu tabel. Sukses terus kak jangan kapok utk update artikel terbaru. Semoga bermanfaat, oh ya kenalin nama aku Sekar Widya Lestari Dari STMIK ATMA LUHUR. Jangan Lula kunjungi juga website kampus Kita (https://www.atmaluhur.ac.id/)

    ReplyDelete

Cara Menggabungkan Dua Tabel Atau Lebih Pada PHP MySQL Cara Menggabungkan Dua Tabel Atau Lebih Pada PHP MySQL