簡體   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