Join 2 Tabel dan 3 Tabel di Codeigniter Sample Menggunakan Data Koperasi

join 2 table dan table di codeigniter

Join table dapat berupa left join, right join dan inner join, kebutuhan melakukan join di suatu sistem sangat sering terjadi karena dalam pembuatan database kita akan membuat relasi antar tabel. Sebagai contoh seorang anggota koperasi di kota painan tentu akan melakukan simpanan berulang kali, simpanan bulan januari, februari, maret dst…. Kegiatan berulang ini harus diimplementasikan pula ke sistem dengan membuat entitas anggota dan simpanan ke bentuk tabel. Satu anggota koperasi dapat dimasukkan data simpanannya berulang kali di tabel simpanan.

Uraian di atas dapat di analogikan seperti gambar berikut:

join 2 tabel codeigniter

Tabel di Atas terdiri dari tabel Anggota dan tabel Simpanan. Join Database antara Tabel anggota dan simpanan adalah contoh dari join data 2 tabel MySQL.

Artikel Lain yang dapat membantu memahami Join di MySQL.

  1. Query SQL Menampilkan Data dari 2 Tabel
  2. Cara Membuat Relasi Tabel di phpMyAdmin

Setelah memahami Join dan relasi di MySQL, untuk membuat join di codeigniter silahkan ikuti langkah dibawah ini:

Langkah- langkah membuat join 2 tabel di codeigniter
1. Buatlah Tabel anggota di database dan masukkan data anggota seperti di bawah ini;

Struktur tabel anggota

CREATE TABLE `anggota1` (
`id_anggota` varchar(5) NOT NULL,
`id_unit` int(5) NOT NULL,
`nama` varchar(30) NOT NULL,
`jenis_kelamin` varchar(30) NOT NULL,
`alamat` text,
`no_hp` varchar(50) DEFAULT NULL,
`ket` text,
PRIMARY KEY (`id_anggota`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

2. Buatlah tabel simpanan dan isikan 5 buah data sehingga akan terlihat seperti outpu di bawah
Struktur tabel simpanan

CREATE TABLE `simpanan` (
`id_simpanan` varchar(9) NOT NULL,
`id_anggota` varchar(5) NOT NULL,
`jumlah_simpanan` decimal(18,2) NOT NULL,
`tgl_simp` date NOT NULL,
PRIMARY KEY (`id_simpanan`),
ENGINE=InnoDB DEFAULT CHARSET=latin1

Output tabel Simpanan

Id SimpananId AnggotaJumlah SimpananTanggal
S0001A000110000.002019-12-11
S0002A000212000.002019-08-23
S0003A000310000.002019-12-04
S0004A000415000.002019-08-08
S0005A000512000.002019-11-14

Join 2 tabel 

3. Untuk melakukan join 2 tabel di codeigniter kita memerlukan model function controller function
dan view berikut
– controller Anggota.php
– model Anggota_model.php
– view simpanan_anggota.php

anggota.php (Controller)

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Anggota extends CI_Controller{
   function __construct(){
   parent::__construct();		
   $this->load->model('anggota_model');
   }

public function data_anggota(){
   $data['anggota'] = $this->anggota_model->data_anggota()->result(); 
   $data['simpanan'] = $this->anggota_model->data_simpanan()->result(); 
   $data['join_anggota_simpanan'] = $this->anggota_model->data_join2table()->result(); 
   $this->load->view('anggota/anggotaview',$data);
} 
}

Anggota_model.php (Model)

<?php 

class Anggota_model extends CI_Model{
   public function data_anggota(){
      $this->db->select('*');
      $this->db->from('anggota');	
      $query = $this->db->get();
      return $query;
   }

   public function data_simpanan(){
      $this->db->select('*');
      $this->db->from('simpanan');
      $this->db->join('anggota','anggota.id_anggota = simpanan.id_anggota');		
      $query = $this->db->get();
      return $query;
   }

   function join2table(){
      $this->db->select('*');
      $this->db->from('simpanan');
      $this->db->join('anggota','anggota.id_anggota = simpanan.id_anggota');		
      $query = $this->db->get();
      return $query;
   }
}

anggotaview.php (View)

<!DOCTYPE html>
<html>
<head>
   <title>Data Anggota</title>
   <style type="text/css">	  	
       thead td {
         padding:5px;
         background-color: #4cb1d8;
         text-align: center;
      }
</style>
</head>

<h2>Data Anggota</h2>
<body>
   <table class="test" border="1">      
      <thead>	    
         <td>Id</td> 
         <td>Nama</td>
         <td>Jenis Kelamin</td>
         <td>Alamat</td>
         <td>No Hp</td>	      
       </thead>	

      <?php	
      foreach($anggota as $rows){ 
      ?>
      <tr>
         <td><?php echo $rows->id_anggota ?></td>
         <td><?php echo $rows->nama ?></td>
         <td><?php echo $rows->jenis_kelamin ?></td>
         <td><?php echo $rows->alamat ?></td>
         <td><?php echo $rows->no_hp ?></td>
      </tr>
      <?php } ?>		
    </table> 

    <h2>Data Simpanan</h2>
   <table class="test" border="1">      
      <thead>	    	     
         <td>Id Simpanan</td> 
         <td>Id Anggota</td>
         <td>Jumlah Simpanan</td>
         <td>Tanggal</td>	      
       </thead>	

      <?php		
      foreach($simpanan as $rows){ 
      ?>
      <tr>
         <td><?php echo $rows->id_simpanan ?></td>
         <td><?php echo $rows->id_anggota ?></td>
         <td><?php echo $rows->jumlah_simpanan ?></td>
         <td><?php echo $rows->tgl_simp ?></td>		
      </tr>
      <?php } ?>		
    </table> 

     <h2>Data Join Anggota dan Simpanan</h2>

    <table class="test" border="1">      
      <thead>	    	     
         <td>Id</td> 
         <td>Nama</td>
         <td>Jumlah Simpanan</td>
         <td>Tanggal</td>	      
       </thead>	

      <?php		
      foreach($join_anggota_simpanan as $rows){ 
      ?>
      <tr>		
         <td><?php echo $rows->id_anggota ?></td>
         <td><?php echo $rows->nama ?></td>
         <td><?php echo $rows->jumlah_simpanan ?></td>
         <td><?php echo $rows->tgl_simp ?></td>		
      </tr>
      <?php } ?>		
    </table> 

</body>
</html>

Hasil Script di atas sebagai berikut

Data Anggota

IdNamaJenis KelaminAlamatNo Hp
A0001AndiLaki-lakiPadang084097350
A0002BulanPerempuanPadang070977772
A0003ToniLaki-lakiPadang079079060
A0004SuciPerempuanPadang009097222
A0005CitraPerempuanPadang075487909

Data Simpanan

Id SimpananId AnggotaJumlah SimpananTanggal
S0001A000110000.002019-12-11
S0002A000212000.002019-08-23
S0003A000310000.002019-12-04
S0004A000415000.002019-08-08
S0005A000512000.002019-11-14

Data Join Anggota dan Simpanan

IdNamaJumlah SimpananTanggal
A0001Andi10000.002019-12-11
A0002Bulan12000.002019-08-23
A0003Toni10000.002019-12-04
A0004Suci15000.002019-08-08
A0005Citra12000.002019-11-14

Selanjutnya untuk melakukan join 3 tabel kita menambahkan 1 tabel lagi pada database yang telah dibuat sebelumnya disini saya tambahkan tabel unit sebagai berikut 

CREATE TABLE `unit` (
 `id_unit` int(5) NOT NULL AUTO_INCREMENT,
 `nama_anggota` varchar(5) NOT NULL,
 `nama_unit` varchar(15) NOT NULL,
 PRIMARY KEY (`id_unit`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1

Masukkan data ke tabel unit sebagai berikut :

Data Unit

Id UnitId Anggota
1SD
2SMP
3SMA
4SD
5SMP

Selanjutnya kita perlu memasukkan data unit ke tabel anggota pada langkah 1. silahkan isikan masing – masing angota id unit. sehingga data tabel anggota menjadi seperti berikut:

IdId UnitNamaJenis KelaminAlamatNo Hp
A00011AndiLaki-lakiPadang084097350
A00022BulanPerempuanPadang070977772
A00033ToniLaki-lakiPadang079079060
A00044SuciPerempuanPadang009097222
A00055CitraPerempuanPadang075487909

4. Untuk menyelesaikan join 3 tabel kita perlu menambahkan function join 3 pada model Anggota_model.php seperti berikut:

public function join3table(){
      $this->db->select('*');
      $this->db->from('anggota');
      $this->db->join('simpanan','anggota.id_anggota = simpanan.id_anggota','LEFT');		
      $this->db->join('unit','anggota.id_unit = unit.id_unit','LEFT');
      $query = $this->db->get();
      return $query;
   }

5. Tambahkan Juga pada Controller Anggota.php script berikut:

$data['join_anggota_simpanan_unit'] = $this->Anggota_model->join3table()->result();

6. Selanjutnya bagian terakhir kita tambahkan script tabel pada anggotaview.php sebelum script </body> sebagai berikut:

<h2>Data Join Anggota dan Simpanan dan Unit</h2>
  <table class="test" border="1">      
    <thead>	    	     
       <td>Id</td> 
       <td>Nama</td>
       <td>Jumlah Simpanan</td>
       <td>Tanggal</td>	      
     </thead>	

    <?php		
    foreach($join_anggota_simpanan_unit as $rows){ 
    ?>
    <tr>		
       <td><?php echo $rows->id_anggota ?></td>
       <td><?php echo $rows->nama ?></td>
       <td><?php echo $rows->jumlah_simpanan ?></td>
       <td><?php echo $rows->tgl_simp ?></td>		
    </tr>
    <?php } ?>
  </table> 

Jika Sudah selesai penambahan pada point 4 5 dan enam silahkan dibuka url controller di browser untuk mengakses halaman join 2 tabel dan join 3 tabel yang telah kita buat tadi maka hasilnya akan menjadi seperti berikut:

IdNamaNama UnitJumlah SimpananTanggal
A0001AndiSD10000.002019-12-11
A0002BulanSMP12000.002019-08-23
A0003ToniSMA10000.002019-12-04
A0004SuciSD15000.002019-08-08
A0005CitraSMP12000.002019-11-14

Demikian artikel tentang join 3 tabel dan 2 tabel yang sangat banyak diterapkan dalam pengembangan sebuah aplikasi atau sistem informasi hal yang paling penting dalam join adalah kita harus memastikan bahwa tabel anak atau child tabel harus berisi id kunci tamu (foreign key) id dari tabel induk parent tabel.

Artikel Terkait

Contoh Fungsi MySQL Join Data Produk dan Kategori

2 Thoughts to “Join 2 Tabel dan 3 Tabel di Codeigniter Sample Menggunakan Data Koperasi”

  1. Thimo

    Bang ini sama halnya dengan kita membuat detail data atau tidak?
    Misalnya saya membuat button detail untuk melihat detail barang yang sudah saya buat

  2. Ade Kurniawan

    Sama. jika tabel barang berelasi dengan tabel detail barang.

    Button detail dapat menampilkan data join ataupun tidak join.
    untuk melihat detail barang, query join dikombinasikan dengan where.

Leave a Comment