MySQL:如何显示来自'费用的2个u_names。包含2个用户的表格显示(从'用户'表中提取2个不同的行)?

时间:2016-10-19 10:12:17

标签: php mysql sql codeigniter

我正在尝试构建费用请求系统,用户可以从主管请求支出。

所以我有一个用户表:

u_id - primary key
u_name 
u_email 
u_password 
u_permissions 
u_sp (if supervisor [Boolean])

和费用表:

exp_id - primary key  
exp_user (index - contains the user ID)   
exp_sp (index - contains the user ID) 
exp_date
exp_amount

我想显示一张包含费用的表格,而不是显示两位用户的ID(exp_userexp_sv) - 我想显示他们的名字以获得更舒适的观点。

我想像往常一样使用JOIN(例如SELECT * FROM expenses JOIN users ON expenses.exp_user=users.u_id),但我注意到我需要一个不同的(exp_sv)所以这不会工作。如何通过区分同一users表中的2行来正确获取此查询?

我使用CodeIgniter,所以这是我模型中的当前代码部分:

// Get "expenses" table  from DB.
public function get_expenses_table() { 

    /*$query = $this->db->get('expenses');
    $result = $query->result();
    return $result;*/

    $query - $this->db->query("SELECT * FROM expenses 
                                                JOIN users 
                                                ON expenses.exp_user=users.u_id ");

}

2 个答案:

答案 0 :(得分:2)

您可以像这样加入他们:

SELECT 
    e.*, 
    u1.u_name user_name,
    u2.u_name supervisor_name
FROM expenses e
LEFT JOIN users u1 on u1.u_id = e.exp_user
LEFT JOIN users u2 on u2.u_id = e.exp_sp

答案 1 :(得分:0)

请试试这个:

 SELECT e.exp_id,e.exp_user,e.exp_sp,e.exp_date,e.exp_amount,
 u.u_name 
 FROM expenses e,users u
 where e.exp_user=u.u_id