我正在尝试构建一个费用请求系统,用户可以在其中向主管请求费用。
所以我有一个用户表:
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_user
和 exp_sv
)- 我想显示他们的名字以获得更多信息舒适的视野。
我想像往常一样使用 JOIN(例如:SELECT * FROM expenses JOIN users ON expenses.exp_user=users.u_id
)但我注意到我需要一个不同的(exp_sv
) 所以这是行不通的。如何通过区分同一个 users
表中的两行来正确执行此查询?
我使用 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 ");
}
最佳答案
你可以像这样加入他们:
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
关于php - MySQL:如何从包含 2 个用户显示的 'expenses' 表中显示 2 个 u_name(从 'users' 表中拉出 2 个不同的行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128379/