繁体   English   中英

加入3个mysql表php codeigniter

[英]Join 3 mysql tables php codeigniter

我有以下3种类型的表,最后我需要获取属于users表的shop_adminshop_coadmin电子邮件地址。

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它将搜索admin和coadmin id ,并需要在用户中搜索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();
}

我该怎么办?

如果您的问题是仅收到具有上述代码的shop_admin电子邮件,则需要将具有另一个别名的li_users表添加到查询中,并将其加入li_shop.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');
...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM