在 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】:

试试这个,

这里,你在加入表格时有一个错误,在CIjoin()的第一个参数中你需要传递/写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的主要内容,如果未能解决你的问题,请参考以下文章

在 mysql codeigniter 中加入 3 个表

在codeigniter中加入四个表

PHP CodeIgniter多个LEFT OUTER在查询中加入

在 django 中加入 2 个表超过 2 列

如何在 R 中加入来自 2 个不同 csv 文件的数据?

Pyspark在第二个数据框中加入多行数据框