我有一个有两列的表。
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']; ?>
但我在两个栏目中都有相同的名称。
答案 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
,因为您在两个表之间断开关系似乎不可行。