Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Join Table di Controller Tidak Bisa dengan Method Join yang Sama
dibawah ini kodingan controller untuk halaman paybill register
$this->db->select
(
"{$this->db->dbprefix('purchases_paybill_register')}.id as id,
DATE_FORMAT(real_paydate, '%Y-%m-%d') as real_pay,
reference_no,
branch,
supplier,
{$this->db->dbprefix('warehouses')}.code as name,
GROUP_CONCAT(CONCAT({$this->db->dbprefix('purchase_items_paybill_register')}.product_name), ' ' SEPARATOR '\n') as iname,
currency,
invoice_no,
date_invoice,
tax_invoice_date,
tax_invoice_no,
voucher_no,
bank_ref,
actual_value,
total_pay,
payment_info,
status_transfer,
myob",
false)
->from('purchases_paybill_register')
->join('warehouses', 'warehouses.id=purchases_paybill_register.warehouse_id', 'left')
->join('purchase_items_paybill_register', 'purchase_items_paybill_register.purchase_id=purchases_paybill_register.id', 'left')
->group_by('purchases_paybill_register.id');
kodingan diatas saya ingin join data table 'purchase_items_paybill_register' dengan 'purchases_paybill_register' untuk mengambil multiple product dan jadi 1 row. Masalahnya adalah kodingan diatas tidak berfungsi.
Tetapi ketika saya join dengan table lain untuk mengambil data produk justru bisa. Sebagai contoh dibawah
$this->db->select
(
"{$this->db->dbprefix('purchases_paybill_register')}.id as id,
DATE_FORMAT(real_paydate, '%Y-%m-%d') as real_pay,
reference_no,
branch,
supplier,
{$this->db->dbprefix('warehouses')}.code as name,
GROUP_CONCAT(CONCAT({$this->db->dbprefix('inventory_items')}.product_name), ' ' SEPARATOR '\n') as iname,
currency,
invoice_no,
date_invoice,
tax_invoice_date,
tax_invoice_no,
voucher_no,
bank_ref,
actual_value,
total_pay,
payment_info,
status_transfer,
myob",
false)
->from('purchases_paybill_register')
->join('warehouses', 'warehouses.id=purchases_paybill_register.warehouse_id', 'left')
->join('inventory_items', 'inventory_items.purchase_id=purchases_paybill_register.id', 'left')
->group_by('purchases_paybill_register.id');
diatas saya join data ke ke 'inventory_items' dan kodingan berfungsi dengan baik. Saya ingin join ke 'purchase_items_paybill_register' bukan 'inventory_items'. Saya sudah menerapkan logika yang sama tapi kenapa kodingan atas tidak bisa, tapi yang bawah bisa?
Apakah saya ada kesalahan atau kekurangan?
Terima kasih.
1 Jawaban:
Masalahnya bukan di JOIN CodeIgniter, tapi di relasi tabel.
Kemungkinan besar:
-
Kolom purchase_id di tabel purchase_items_paybill_register tidak ada / beda nama / nilainya NULL, jadi tidak match dengan purchases_paybill_register.id.
-
Karena pakai LEFT JOIN + GROUP_CONCAT, kalau data tidak match, hasilnya terlihat seperti “tidak berfungsi”.
-
nventory_items bisa jalan karena relasinya benar, sedangkan purchase_items_paybill_register tidak.