php - MySQL:如何从包含 2 个用户显示的 'expenses' 表中显示 2 个 u_name(从 'users' 表中拉出 2 个不同的行)?

标签 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 表中的两行来正确执行此查询?

我使用 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/

相关文章:

sql - 在 SQL View 中用字符串替换 id

sql - 删除数据库但不删除 *.mdf/*.ldf

php - 为 bindParam 重用变量时奇怪的 PDO 行为

javascript - 跟踪页面上每个链接的点击次数

java - 添加映射<String, Entity>时约束冲突合并实体

mysql - 显示(多个)变量

sql - 将SQL语句翻译成named_scope?

php - 跨多个表的 MySQL 查询问题

PHP - 检查服务器是否离线并且不在 XAMPP 中显示警告

php - 如何从 PHP 中的选择查询中获取列名?