2015-10-05 61 views
0

我有以下类型的3表,最后我需要得到shop_adminshop_coadmin电子邮件地址是用户表的一部分。加入3个MySQL表php的codeigniter

table-1-shop 
------------------------------- 
shop_id | shop_name | shop_admin(foreignkey user_id) | shop_coadmin(foreignkey user_id) 

table-2-Users 
------------------------------- 
user_id | user_name | user_email 

table-3-orders 
-------------------------------- 
order_id | shop_id  

现在,我的要求是从用户表中获取shop_admin和shop_coadmin电子邮件ID,

订单包含shop_id,并与shop_id它会搜索管理员和coadmin id S,并用它需要在用户搜索为user_email

我想下面的代码,但我不能收到电子邮件

public function getAllCart($user_id,$paging, $ordering, $searching) 
{ 
    $this->db->select('part_number, part_description, order_quantity, order_id, B.user_firstname, B.user_lastname, B.user_email, A.shop_name, 
    A.shop_admin AS shop_admin'); 
    $this->db->from('li_orders'); 
    $paging; 
    $ordering; 
    $searching; 

    $this->db->where('order_status', 'Cart'); 
    $this->db->join('li_parts', 'li_parts.part_id = li_orders.part_id','LEFT'); 
    $this->db->join('li_shop AS A', 'A.shop_id = li_orders.shop_id','LEFT'); 
    $this->db->join('li_users AS B', 'B.user_id = A.shop_admin','LEFT'); 
    $this->db->where('li_orders.user_id', $user_id); 
    return $this->db->get()->result_array(); 
} 

我怎样才能得到它?

回答

1

如果您的问题是只有shop_admin的电子邮件包含上面的代码,那么您需要将li_users表与另一个别名添加到查询中,并将其加入到li_shop.coadmin字段中。显然,您需要添加表中的字段和新别名,并标记哪些用户详细信息用于管理员,哪些用于coadmin使用字段别名。

... 
$this->db->select('part_number, part_description, order_quantity, order_id, B.user_firstname as adminfirstname, B.user_lastname as adminlastname, B.user_email as adminemail, C.user_firstname as coadminfirstname, C.user_lastname as coadminlastname, C.user_email as coadminemail, A.shop_name, 
A.shop_admin AS shop_admin'); 
... 
$this->db->join('li_users AS B', 'B.user_id = A.shop_admin','LEFT'); 
$this->db->join('li_users AS C', 'C.user_id = A.shop_coadmin','LEFT'); 
... 

下一次当您描述代码中使用的表结构时,请使用相同的表和字段名称。