如何用名称替换两个用户id列?

时间:2017-11-14 00:55:10

标签: php mysql

我有一个有两列的表。

created_by | assigned_to

一个是创建“待办事项卡”的人,另一个列是指定执行此操作的人。

列中填充了id,例如; (1,2,3)。

我的问题是如何将此id替换为另一个表中保存的名称。

到目前为止,这就是我得到的。

SELECT tickets.*, users.Name, users.LastName
FROM tickets
LEFT JOIN users ON tickets.assigned_to = users.uid
AND tickets.id_usuario = users.uid

但是当我尝试打印角色的名称时

创建者:<?= query['Name']; ?>

分配给:<?= query['Name']; ?>

但我在两个栏目中都有相同的名称。

1 个答案:

答案 0 :(得分:1)

当创建者和分配给用户ID相同时,您当前的查询只会加入users

您需要两次加入users表格以检索单独的记录。您可以通过添加更多联接来实现此目的......

SELECT
  c_users.Name as created_by_name,
  c_users.LastName as created_by_last_name,
  a_users.Name as assigned_to_name,
  a_users.LastName as assigned_to_last_name
FROM tickets t
INNER JOIN users c_users
  ON t.created_by = c_users.uid
  -- or t.id_usuario = c_users.uid, it is not clear from your question
INNER JOIN users a_users
  ON t.assigned_to = a_users.uid

我已使用INNER JOIN代替LEFT JOIN,因为您在两个表之间断开关系似乎不可行。