gpt4 book ai didi

php - 使用连接库时如何在 codeigniter 上创建别名

转载 作者:行者123 更新时间:2023-11-30 22:19:13 25 4
gpt4 key购买 nike

我试图在查询中加入别名,这样它就不会给出非唯一表的错误。

如您所见,我在后面放置了带有新名称的 '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);
}


}
?>

我得到的错误是:

A Database Error Occurred Error Number: 1066 Not unique table/alias: '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 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 FROM (cm_valuacion, cm_proveedor, cm_compras, cm_valuacion, cm_valuacionr, cm_nomina, cm_empleado) JOIN cm_valuacionr ON cm_valuacionr.id_siniestro = cm_valuacion.id_siniestro JOIN cm_compras ON cm_valuacionr.id_siniestro = cm_compras.id_siniestro JOIN cm_proveedor ON cm_proveedor.id = cm_compras.id_proveedor JOIN cm_nomina ON cm_nomina.id_siniestro = cm_compras.id_siniestro JOIN cm_empleado 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 = '6489' Filename: C:\xampp\htdocs\index\system\database\DB_driver.php Line Number: 330

最佳答案

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

关于php - 使用连接库时如何在 codeigniter 上创建别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37151793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com