在 codeigniter 中加入超过 2 个数据库表错误:1066
Posted
技术标签:
【中文标题】在 codeigniter 中加入超过 2 个数据库表错误:1066【英文标题】:Join more than 2 database table in codeigniter Error : 1066 【发布时间】:2019-07-26 04:09:07 【问题描述】:所以我对 codeigniter 有点陌生,我试图从我的数据库中加入 3 个表
数据库 1:dkm(id、tgl、ref 等)
数据库 2:order_product(kode_barang、packing、nama_barang 等)
数据库 3:产品(kodeprod、tglpakai 等)
我已经尝试了其他人在 codeigniter 中加入超过 2 个表的方法,但我收到了这个错误:
错误号:1066
不是唯一的表/别名:'order_product'
SELECT *
FROM `order_product`
JOIN `order_product` ON `order_product`.`kode_barang` = `dkm`.`id`
JOIN `order_product` ON `order_product`.`kode_barang` = `produksi`.`kodeprod`
这是我的代码:
Bukaka_model.php
public function getOrderProduct()
$this->db->select('*');
$this->db->from('order_product');
$this->db->join('order_product','order_product.kode_barang = dkm.id');
$this->db->join('order_product','order_product.kode_barang = produksi.kodeprod');
$query = $this->db->get();
return $query->result();
【问题讨论】:
【参考方案1】:您尝试多次加入同一个表,而不是每次都需要加入其他表一次。
您只需更改要加入的表的名称:
public function getOrderProduct()
$this->db->select('*');
$this->db->from('order_product');
$this->db->join('dkm','order_product.kode_barang = dkm.id');
$this->db->join('produksi','order_product.kode_barang = produksi.kodeprod');
$query = $this->db->get();
return $query->result();
【讨论】:
如果我想从数据库中选择某个列怎么办?如果我选择所有它得到错误关于不能使用 stdClass 类型的对象 这不太可能与选择所有列有关(尽管如果没有确切的错误和相关代码则无法完全确定),但要仅选择特定列,您只需更改*
中的select()
这样的事情:$this->db->select('order_product.someColumn', 'dkm.someColumn', 'produksi.someColumn', 'dkm,someOtherColumn')
【参考方案2】:
试试这个,
这里,你在加入表格时有一个错误,在
CI
join()
的第一个参数中你需要传递/写table
你想要的名字join
public function getOrderProduct()
$this->db->select('*');
$this->db->from('order_product');
$this->db->join('dkm','order_product.kode_barang = dkm.id');
$this->db->join('produksi','order_product.kode_barang = produksi.kodeprod');
$query = $this->db->get();
if($query->num_rows() > 0)
return $query->result();
else
return array();
【讨论】:
【参考方案3】:Try this:
public function getOrderProduct()
$this->db->select('*');
$this->db->from('order_product');
$this->db->join('dkm','dkm.id= order_product.kode_barang');
$this->db->join('produksi',' produksi.kodeprod = order_product.kode_barang');
$query = $this->db->get();
return $query->result();
【讨论】:
请解释您所做的更改以及更改原因 - 这有助于其他人从您的回答中学习 另外,您能否解释一下为什么您的答案与 M.Hemant 在您之前一个多小时发布的答案如此相似? 不一样看到我和他的不同的连接线 $this->db->join('dkm','dkm.id= order_product.kode_barang'); $this->db->join('produksi',' produksi.kodeprod = order_product.kode_barang'); 我已经改了这两行,先看清楚再谈以上是关于在 codeigniter 中加入超过 2 个数据库表错误:1066的主要内容,如果未能解决你的问题,请参考以下文章