[英]Join 3 mysql tables php codeigniter
我有以下3种类型的表,最后我需要获取属于users表的shop_admin
和shop_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.