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

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

Published by Ade Kurniawan on

Pada Artikel ini kita akan membahas tentang join codeigniter. Join di codeigniter dapat berupa left join, right join dan inner join. Kebutuhan melakukan join saat membuat aplikasi sering terjadi karena dalam aplikasi tersebut terdapat database yang terdiri atas tabel yang saling berelasi.

Data relasi tabel yang telah dibuat di database untuk ditampilkan di halaman aplikasi/web perlu di olah lagi di model dengan membuatkan query join agar tampil sesuai dengan kebutuhan.

Sebagai contoh penggunaan aplikasi koperasi untuk mengolah data simpanan dan pinjaman. Seorang anggota koperasi tentu akan melakukan simpanan berulang kali, simpanan bulan januari, februari, maret dst….

Kegiatan menyimpan berulang ini perlu diimplementasikan dengan membuat entitas anggota dan simpanan ke bentuk tabel. Satu anggota koperasi di tabel anggota dapat dimasukkan data simpanannya berulang kali ke tabel simpanan.

Relasi dan join yang terjadi antara tabel Angota dan simpanan dapat digambarkan sebagai berikut:

join 2 tabel codeigniter
Join Codeigniter

Dari Gambar di atas dapat kita lihat bahwa join anggota dan simpanan adalah bentuk data yang akan kita tampilkan di halaman aplikasi atau web. Sedangkan tabel anggota dan simpanan adalah 2 tabel yang ada di database yang akan di joinkan.

Artikel Lain yang dapat membantu memahami Join di MySQL:

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

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 anggota (
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

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

Membuat Join 3 tabel di Codeigniter

Untuk melakukan join 3 tabel kita menambahkan 1 tabel lagi pada database yang telah dibuat sebelumnya.

1. Buat tabel unit

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

Masukkan data ke tabel unit sebagai berikut :

Data Unit

Id UnitNama Unit
1SD
2SMP
3SMA
4UNIVERSITAS
5YAYASAN

2. Selanjutnya kita perlu memasukkan data unit ke tabel anggota yang telah dibuat sebelumnya. 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

3. Untuk menyelesaikan join 3 tabel kita perlu menambahkan function baru 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;
   }

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

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

5. 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 3 4 dan 5 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 tabel parent.

Artikel Terkait

Categories: Codeigniter

2 Comments

Thimo · July 5, 2021 at 1:27 pm

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

Ade Kurniawan · July 6, 2021 at 10:19 am

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 Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *