直到我加入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();
在上图中,Consignor
和Consignee
提取了ID,但我想命名,所以我想加入第4个表,即ts_users
在此表中,此Consignor
和Consignee
的全名
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)
的全名
答案 0 :(得分:2)
由于您没有真正告诉我们consignor
和consignee
字段的来源,因此您需要填写空白(在下面用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