【问题标题】:How to display name instead of id if records are in one table?如果记录在一个表中,如何显示名称而不是 id?
【发布时间】:2018-11-10 15:56:29
【问题描述】:

我正在使用 CodeIgniter。我有一张员工表,记录是

id |firstname | lastname | mobileno   | created_by
 2 |mnb       | nbgfv    | 1452145625 | 1
 3 |jhg       | uhgf     | 1452365478 | 2
 4 |poi       | ijuy     | 1458745632 | 2
 5 |tgf       | tgfd     | 1458745254 | 2
 6 |wer       | qwes     | 1523654512 | 2

现在我的问题在created_by 列中。当我显示任何 id 值的记录时,我会得到类似

的输出
    id |firstname | lastname | mobileno   | created_by
     3 |jhg       | uhgf     | 1452365478 | 2

但我的预期输出

id |firstname | lastname | mobileno   | created_by
 3 |jhg       | uhgf     | 1452365478 | mnb nbgfv

我必须显示created_by的名字

我只尝试了这个查询。

   $get_single_emp_record = array('id' => 3);
   $this->db->where($get_single_emp_record);
   $query = $this->db->get('tbl_employee');
   $result = $query->row();
   if($result)
   {
   return $result;
   }
   else 
   {
   return 0;
   }

【问题讨论】:

  • 我假设created_by 是另一个用户的id,所以使用此列加入同一个表。
  • @NigelRen,是的,我只有一个表,created_by 是表的id。

标签: php mysql codeigniter-3


【解决方案1】:

我有一个提示(也许这可以解决您的问题)。 尝试这样的查询:

SELECT 
t1.id , t1.firstname , t1.lastname ,t1.mobileno, 
CONCAT(t2.firstname ," ",t2.lastname ) AS createby 
FROM tbl_employee AS t1 
JOIN tbl_employee AS t2 ON t2.id = t1.created_by
WHERE t1.id = '3'

使用上述查询,您无需创建临时表或其他附加表。 我测试了它。 >>> http://sqlfiddle.com/#!9/e693cf/2/0

【讨论】:

    【解决方案2】:

    您将不得不创建另一个表,可能是tbl_creator,其中将包含id, creator_name,然后在您的查询中您将执行联接操作

    【讨论】:

    • 还有其他显示方式吗?因为我不想再创建一张表。我的表中已经有 200 多条记录了。
    • 如果你想实现你的目标,我相信这是最好的方法
    • 只有两个表将执行魔术员工表和创建者表,然后执行连接
    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2022-11-01
    相关资源
    最近更新 更多