Cara Melakukan Join 2 dan 3 Table atau lebih di CodeIgniter dengan Active Record

Join Table CodeIgniter merupakan cara menampilkan data dengan menggabungkan Table-table Databse yang memiliki Id Primary key yang sama atau Foreign Key nya.

Untuk menampilkan Data dengan join perlu kita membuat Table-tablenya terlebih dahulu atau mungkin sudah mempunyai dan sedang mencari cara Bagaimana membuat atau menampilkan data dengan menggabungkan 2 Table atau lebih di CodeIgniter, bisa menggunakan Active Record atau tidak.

Baca : Cara membuat Databse di PhpMyaAdmin Xampp

Okeh langsung saja disini saya menggunakan Query Bulider Khas CcodeIgniter bukan Prosedural yoh..^_^..

Berikut saya sudah siapkan Table-Table nya :

Join 2 dan 3 Table atau lebih di CodeIgniter
Table tbrakyat

Join 2 dan 3 Table atau lebih di CodeIgniter
Table tbsekolah

Join 2 dan 3 Table atau lebih di CodeIgniter
Table tbstatus
Dari table-table diatas :
Dengan mempuyai Id yang sama yaitu Id(tbrakyat) = Id(tbsekolah) dan Idpendidikan(tbsekolah) = Idpendidikan(tbstatus)

Di sini saya akan menampilkan Join 2 Table terlebih dahulu, Kita langsung saja untuk membuat model, Controler dan Viewnya, untuk settingan dasar seperti Config, route, database bisa kalian cara i Google sendiri ^_^ ...

untuk code view nya dengan nama nong.php sebagai berikut :
<!DOCTYPE html>
<html>
<head>
<title><?php echo $title;?></title>
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
</style>
</head>
<body>
<label><h2><b>Join 2 Table CodeIgniter</b></h2></label>
<table>
  <tr>
    <th>No.</th>
    <th>Nama</th>
    <th>Alamat</th>
    <th>Sekolah</th>    
  </tr>
  <?php 
  $no=1; 
  foreach ($join2 as $row) { ?>
  <tr>
  <td><?php echo $no++;?></td>
  <td><?php echo $row->nama;?></td>
  <td><?php echo $row->alamat;?></td>
  <td><?php echo $row->pendidikan;?></td>
  </tr>
    <?php } ?>
    
</table>

</body>
</html>

Dan untuk Controller dengan nama cung.php sebagai berikut :
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Cung extends CI_Controller {

 function __construct()
 {
 parent::__construct();
 $this->load->model('mjoin', '', TRUE);
 $this->load->helper(array('form', 'url'));
 }

 public function index()
 {
  $data['title'] = "Join CodeIgniter"; 

    // query memanggil function duatable di model
    $data['join2'] = $this->mjoin->duatable(); 
  $this->load->view('nong',$data);    
  
 } 
  
}

Untuk modelnya dengan nama mjoin.php sebagai berikut :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mjoin extends CI_Model {
 
public function duatable() {
 $this->db->select('*');
 $this->db->from('tbrakyat');
 $this->db->join('tbsekolah','tbsekolah.id=tbrakyat.id');
 $query = $this->db->get();
 return $query->result();
}

}

/* End of file model_keuangan.php */
/* Location: ./application/model/model_keuangan.php */

Dan ini hasil tampilan dari Join Query CodeIgniter 2 Table yaitu tbrakyat dan tbsekolah

Join 2 Table MySQL CodeIgniter
Join 2 Table MySQL CodeIgniter

Dan Bagaiman untuk melakukan Join 3 Table atau lebih menggunakan Active recordnya misal kita contoh menampilkan data dengan nama Edi kita set nanti Active Recordnya di Model ditambahkan Query Where,..

Okeh langsung saja dan untuk coding Viewnya di tambah field sedikit 
<!DOCTYPE html>
<html>
<head>
<title><?php echo $title;?></title>
<style>
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

tr:nth-child(even) {
    background-color: #dddddd;
}
</style>
</head>
<body>
<label><h2><b>Join 3 Table CodeIgniter Active Record&nbsp;<?php echo $nama;?></b></h2></label>
<table>
  <tr>
    <th>No.</th>
    <th>Nama</th>
    <th>Alamat</th>
    <th>Sekolah</th>   
    <th>Status</th>    
  </tr>
  <?php 
  $no=1; 
  foreach ($join3 as $row) { ?>
  <tr>
  <td><?php echo $no++;?></td>
  <td><?php echo $row->nama;?></td>
  <td><?php echo $row->alamat;?></td>
  <td><?php echo $row->pendidikan;?></td>
  <td><?php echo $row->status;?></td>
  </tr>
    <?php } ?>
    
</table>

</body>
</html>

Dan ini Untuk Coding Controllernya hampir sama kaya tadi tapi disini kita mengirim variable untuk diterapkan di Query Where
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Cung extends CI_Controller {

 function __construct()
 {
 parent::__construct();
 $this->load->model('mjoin', '', TRUE);
 $this->load->helper(array('form', 'url'));
 }

 public function index()
 {
    //passing data controller ke view
    $data['nama'] = "Edi";
  $data['title'] = "Join CodeIgniter"; 

    //active record dengan nama edi
    $aktif = array('nama'=>'Edi');

    // query memanggil function tigatable di model
    $data['join3'] = $this->mjoin->tigatable($aktif); 
  $this->load->view('nong',$data);    
  
 } 
  
}

Untuk Modelnya sebagai berikut :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Mjoin extends CI_Model {
 
public function tigatable($aktif) {
 $this->db->select('*');
 $this->db->from('tbrakyat');
 $this->db->join('tbsekolah','tbsekolah.id=tbrakyat.id');
 $this->db->join('tbstatus','tbstatus.idpendidikan=tbsekolah.idpendidikan');
 $this->db->where($aktif);
 $query = $this->db->get();
 return $query->result();
}

}

/* End of file model_keuangan.php */
/* Location: ./application/model/model_keuangan.php */


Dan Berikut Hasil tampilan Active Record Join 3 Table di CodeIgniter, Gimana mudah dan simple kan...
Join 3 Table Active Record CodeIgniter
Join 3 Table Active Record CodeIgniter

Okeh Terima kasih Demikian Tutorial cara menampilkan data, menggabungkan dengan Join Query 2 dan 3 atau lebih dengan Active Record di CodeIgniter.

Comments

  1. makasih,..,.,.ckup,.,membantu,.,.jika pinginnya active recordnya user yang sedang login,.,.kira-kira modifikasinya di bagian mana>???maaf masih belajar,.,.

    ReplyDelete
  2. tinggal kasih $this->db->where();

    ReplyDelete
  3. makasi banget... sangat membantu...

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

    Tolong bantu Gan..

    ReplyDelete
    Replies
    1. Coba ni gan, kira-kira begitu,
      public function show_data_by_tid_pic($postid,$postpic) {
      $active = array ('tid'=>$postid,'nama'=>$postpic);
      $this->db->select('*');
      $this->db->from('otslm');
      $this->db->join('pic', 'pic.id = otslm.id');
      $this->db->where($active);
      $query = $this->db->get();
      if ($query->num_rows() > 0) {
      return $query->result(); } else {
      return false;
      }
      }
      kalau salah, saya harus liat struktur table yang di join dulu..

      Delete
    2. gan kalau ada left joinnya gmna

      Delete
    3. gan kalau ada left joinnya gmna

      Delete
    4. tinggal tambahkan keterangan left or right bagian
      $this->db->join('pic', 'pic.id = otslm.id');
      jadi hasilnya
      $this->db->join('pic', 'pic.id = otslm.id','left');

      Delete
  5. Makasih bro tutorialnya. Sangat membantu

    ReplyDelete
  6. Terimakasih ,sangat membatu sekali

    ReplyDelete
  7. menampilkan last row pada group_by, caranya gimana ya.. terima kasih..

    ReplyDelete
    Replies
    1. $this->db->group_by('parameter yang di set berdasarkan nama field table');

      Delete
  8. coba ini gan
    $this->db->select('*');
    $this->db->from('tablename1');
    $this->db->order_by('table1Id','DESC');
    $subquery = $this->db->get_compiled_select();

    $this->db->select('*');
    $this->db->from('('.$subquery.') a');
    $this->db->join('tablename2', 'tablename2.tagid= a.tagid', 'left');
    $this->db->group_by('a.tagId, tablename2.tagId');
    $this->db->order_by('a.tagId','asc');

    ReplyDelete
  9. bang, kalau inputnya berlerasi antar tabel bagaimana ya?

    ReplyDelete
    Replies
    1. tinggal pake multi insert,
      query insert table pertama, dan query insert table selanjutnya

      Delete
  10. penulisan di modelnya bagaimana ya ?
    maaf masih newbie

    ReplyDelete
  11. https://www.codeigniter.com/userguide3/database/query_builder.html#inserting-data
    cek sini kaka

    ReplyDelete
  12. bang kalau ngambil data dari 3 tabel yg relasi bagaimana ya?

    ReplyDelete
  13. select plus join query seperti diatas..

    ReplyDelete
    Replies
    1. bang bisa minta tolong solusinya ga ya?

      A Database Error Occurred

      Error Number: 1054

      Unknown column 'c.merk' in 'field list'

      SELECT d.*, a.kategori, b.sub_kategori, c.merk FROM produk d LEFT JOIN kategori a ON(d.id_kategori = a.id_kategori) LEFT JOIN sub_kategori b ON(d.id_sub_kategori = b.id_sub_kategori) LEFT JOIN merk c ON(d.id_merk = c.id_merk)order by id_produk desc

      Filename: C:/xampp/htdocs/prototype/MoreAps16/system/database/DB_driver.php

      Line Number: 691

      modelnya
      public function GetProdukKatMerko($where= "") {
      $data = $this->db->query('SELECT d.*, a.kategori, b.sub_kategori, c.merk
      FROM produk d
      LEFT JOIN kategori a
      ON(d.id_kategori = a.id_kategori)
      LEFT JOIN sub_kategori b
      ON(d.id_sub_kategori = b.id_sub_kategori)
      LEFT JOIN merk c
      ON(d.id_merk = c.id_merk)'.$where);
      return $data;
      }

      Delete
  14. pake yang query builder ajah... om jangan procedural.. gimana

    ReplyDelete
    Replies
    1. waduh...ternyata langsung nancep si abang satu ini. wkwkwwk

      lgi dapet tugas kampus om, suruh pake teknik procedural, ya..bagaimana ya, tugas kerlompok kerjain sendiri. mana susah juga lagi tugas nya buat diselesein. engga ada pula yang bantu, jadi saya...cari-cari diinternet bala bantuan hahahaha

      Delete
  15. gan kalo ane kan sudah join table tapi dari table 1 itu mau ditampilin 2 colom ke table 2 nah ane bingungnya itu cara manggil di viewnya gimana ya

    ReplyDelete
  16. om mau tanya tapi di luar topic, kalau misalnya data kita katakanlah ada 50.000 bagaimana caranya tangani data sebanyak itu ? 
    #codeigniter ya om hehehe.
    makasih om

    ReplyDelete
    Replies
    1. maksudnya tangani bagimana om...ada problem dengan data 50.000 atau gimana om...
      terima kasih sudah mampir

      Delete
  17. Replies
    1. $data['join2'] tu variable array tuk pasing data, ke view

      Delete
  18. mas..mau nanya?
    kalau mau ngambil id dari tabel lain bagaimana ya?

    ReplyDelete
    Replies
    1. maksudnya detailnya giaman om...
      secara umum untuk data ambil dengan id tertentu tambahkan query where saja

      Delete
  19. bang menghubungkan 2 table ke login dengan id yang berbeda ??

    ReplyDelete
    Replies
    1. harus ada yang sama dalam 1 fieldnya om.. kalau mau join query, kalau beda tidak di laukan join,

      Delete
  20. Permisi kalo misalnya kita panggil id tabel satu tapi mencakup juga data tabel 2 itu pakenya apa yah trimakasih

    ReplyDelete
    Replies
    1. di join dengan id yang sama isi field nya antar table

      Delete
  21. mohon bantu gan..
    cara join tabel dari 2 database di codeiginiter

    ReplyDelete
    Replies
    1. belum pernah coba databse yang beda om. sorry... nanti kalau coba bisa tak bikin threadnya

      Delete
  22. terimakasih mas sangat membantu

    ReplyDelete
  23. Kalau banyak yang mau digabung gimana carana

    ReplyDelete
  24. bang kalau misalkan ada error di view nya, dimana variable $join2 tidak terdefinisi itu bagaimana ya?

    ReplyDelete
  25. mau nanya kalau yang muncul datanya jadi double itu masalahnya apa ya?

    ReplyDelete
  26. bang tolong dong klo ky begini salahnya di mana...
    Error Number: 1103

    Incorrect table name 'user_menu '

    SELECT `user_menu`.`id`, `menu`.* FROM `user_menu ` JOIN `user_access_menu` ON `user_menu`.`id `= `user_access_menu`.`menu_id ` WHERE `user_access_menu`.`role_id` = '2' ORDER BY `user_access_menu`.`menu_id` ASC

    ReplyDelete

Post a Comment