代码之家  ›  专栏  ›  技术社区  ›  learningbyexample

使用联接库时如何在codeigniter上创建别名

  •  1
  • learningbyexample  · 技术社区  · 9 年前

    我试着 别名 这样就不会出现表不唯一的错误。

    正如你所看到的,我已经 '作为' 后面有一个新名字,但它给了我一个 错误 .我怎么做错了?
    这是我模型中的内容:

    <?php 
    class Joins_model extends CI_Model{
        private $table = 'cm_proveedor, cm_compras, cm_valuacion, cm_valuacionr, cm_nomina, cm_empleado';
        function _construct(){
           parent::Model();
        }
    
        function get_reg($data){
    
            $this->db->select('
                                cm_valuacion.tipo_r AS valR,
                                cm_valuacion.mano_obra AS valM,
                                cm_valuacion.hojalateria AS valH,
                                cm_valuacion.pintura AS valP,
                                cm_valuacion.mecanica AS valMec,
                                cm_valuacion.refaccion AS valRef,
                                cm_valuacion.shojalateria AS valSH,
                                cm_valuacion.tipo AS valT,
                                cm_valuacion.spintura AS valSP,
                                cm_valuacion.costoHojalateria AS valCH,
                                cm_valuacion.smecanica AS valSM,
                                cm_valuacion.costoPintura AS valCP,
                                cm_valuacion.costoMecanica AS valCM,
                                cm_valuacion.pv_hojalateria AS valPH,
                                cm_valuacion.pv_pintura AS valPP,
                                cm_valuacion.pv_mecanica AS valPM,
                                cm_valuacion.pc_hojalateria AS valPH,
                                cm_valuacion.pc_pintura AS valPPin,
                                cm_valuacion.pc_mecanica AS valPMec,
                                cm_compras.precio,
                                cm_proveedor.nombre,
                                cm_nomina.nomina,
                                cm_empleado.nombre,
                                cm_nomina.id_nomina_gral
                                ',FALSE);
    
            $this->db->from('cm_valuacion');
            $this->db->join('cm_valuacionr','cm_valuacionr.id_siniestro = cm_valuacion.id_siniestro');
            $this->db->join('cm_compras','cm_valuacionr.id_siniestro = cm_compras.id_siniestro');
            $this->db->join('cm_proveedor','cm_proveedor.id = cm_compras.id_proveedor');
            $this->db->join('cm_nomina','cm_nomina.id_siniestro = cm_compras.id_siniestro');
            $this->db->join('cm_empleado','cm_nomina.id_empleado = cm_empleado.id');
            $this->db->join('cm_nomina_gral','cm_nomina.id_nomina_gral = cm_nomina_gral.id');
            $this->db->where('cm_valuacion.id_siniestro',$data);
            //$this->db->order_by('id','asc');
            $this->db->distinct();
            return $this->db->get($this->table);
        }
    
    
    }
    ?>
    

    我得到的错误是:

    发生数据库错误 错误编号:1066 表/别名不唯一:'cm_valuacion' 选择DISTINCT cm_valuacion。tipo_r AS valR,cm_valuacion。mano_obra AS valM,cm_valucion(手动_布拉AS值M,cm_评估)。hojalateria AS valH,cm_valuacion公司。品图拉AS valP,cm_valuacion。mecanica AS valMec,cm_valuacion公司。参考AS valRef,cm_valuacion。shojalateria AS valSH,cm_valuacion公司。tipo AS valT,cm_valuacion。spintura AS valSP,cm_valuacion公司。costoHojalateria AS valCH,cm_valuacion公司。smecanica AS valSM,cm_valuacion公司。costoPintura AS valCP,cm_valuacion公司。成本机械AS valCM,cm_valuacion。pv_hojalateria AS valPH,cm_valuacion公司。pv_pintura AS valPP,cm_valuacion。pv_mecanica AS valPM,cm_valuacion。pc_hojalateria AS valPH,cm_valuacion公司。pc_pintura AS valPPin,cm_valuacion。pc_mecanica AS valPMec,cm_compars。precio、cm_provedor。标称,cm_nomia。命名,cm_empleado。标称,cm_nomia。id_nomina_gral来自( cm_valuacion , cm_proveedor , cm_compras , cm_评估 , cm_valuacionr , cm_nomina , cm_empleado )加入 cm_评估 上的 cm_评估 . id_siniestro = cm_评估 . id初始 加入 cm_压缩 上的 cm_评估 . id初始 = cm_压缩 . id初始 加入 cm_审核人 上的 cm_审核人 . id = cm_压缩 . id_proveedor 加入 厘米_名称 上的 厘米_名称 . id初始 = cm_压缩 . id初始 加入 cm_示例 上的 厘米_名称 . id_empleado = cm_示例 . 身份证件 加入 cm_nomina_gral 上的 厘米_名称 . id_nomina_gral = 厘米_标称_格拉尔 . 身份证件 哪里 cm_评估 . id初始 = '6489' 文件名:C:\xampp\htdocs\index\system\database\DB_driver.php 行号:330

    1 回复  |  直到 9 年前
        1
  •  0
  •   Yaseen Ahmad J.Mursi    9 年前

    错误在JOIN子句中。当多次加入同一个表时,必须为表名指定别名。当一个表被多次联接时,SQL不知道要引用哪个表。

    例子:

    SELECT * FROM (cm_valuacion, cm_proveedor, cm_compras, cm_valuacion,
     cm_valuacionr, cm_nomina, cm_empleado) 
    JOIN cm_valuacionr **valnr** ON **valnr**.id_siniestro = cm_valuacion.id_siniestro