【问题标题】:How do I make aliases on codeigniter when using the join library使用连接库时如何在 codeigniter 上创建别名
【发布时间】:2016-09-06 05:09:12
【问题描述】:

我已尝试将 aliases 放入查询中,以便它不会给出非唯一表的错误。

如您所见,我在 'AS' 之后放置了一个新名称,但它给了我一个错误。我怎么做错了?
这就是我的模型中的内容:

<?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' SELECT DISTINCT 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 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 FROM (cm_valuacion, cm_proveedor, @987634 987654325 @,cm_valuacionrcm_nominacm_empleado)JOIN cm_valuacionr ON cm_valuacionrid_siniestro = cm_valuacionid_siniestro JOIN cm_compras ON cm_valuacionrid_siniestro = cm_compras.@9876 54338 @加入cm_proveedor ON cm_proveedor 987654341 @ = cm_compras 987654343 @ cm_nomina ON cm_nomina 987654347 cm_compras 987654349 @ ON cm_nomina .id_empleado = cm_empleado.id JOIN cm_nomina_gral ON cm_nomina.id_nomina_gral = cm_nomina_gral.id WHERE cm_valuacion.id_siniestro=' 文件名:C:\xampp\htdocs\index\system\database\DB_driver.php 行号:330

【问题讨论】:

    标签: php mysql codeigniter join


    【解决方案1】:

    错误出现在您的 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
    

    【讨论】:

    • 这不是 OP 明确希望使用的 ActiveRecord。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多