我想在Codeigniter中加入4个表

时间:2018-12-06 12:06:08

标签: php mysql sql codeigniter

直到我加入3张桌子

$this->db->select('*');    
$this->db->from('dispatch_challan');
$this->db->join('challan_bilties', 'dispatch_challan.disp_id = challan_bilties.challan_id');
$this->db->join('bilty', 'challan_bilties.challan_bilties_id = bilty.id');
$this->db->where('dispatch_challan.disp_ch_no',$disp_ch_no); 

 $query = $this->db->get();
 return $query->result_array(); 

连接表后我的输出是这样的 enter image description here

在上图中,ConsignorConsignee提取了ID,但我想命名,所以我想加入第4个表,即ts_users

在此表中,此ConsignorConsignee的全名

                           ts_users table

               user_id  user_fullname  user_remark
                 1            abc         consignee
                 2            xyz         consignor
                 3            pqr         consignee
                 4            lmn         consignor  

我想从第4张桌子Consignor中获得基于Consignee(ts_users)的全名

2 个答案:

答案 0 :(得分:2)

由于您没有真正告诉我们consignorconsignee字段的来源,因此您需要填写空白(在下面用xxx表示)

您需要做的就是使用ts_users表两次。添加这些:

$this->db->join('ts_users u1', 'xxx.consignor = u1.user_id');
$this->db->join('ts_users u2', 'xxx.consignee = u2.user_id');

由于您将使用同一张表连接两次,因此如果您坚持使用select *,结果集会有些混乱,因此建议您仅提取所需的字段。例如:

$this->db->select('u1.user_id as consignor, u2.user_id as consignee, dispatch_challan.*, challan_bilties.*, bilty.*');

试一试,让我知道它是否有效

答案 1 :(得分:1)

这是如何在codeigniter中联接任意数量的表而没有任何问题:

func