查询以获取相关表中的数据

use*_*104 5 php mysql sql codeigniter

有两个表:管理员,新闻

结构是这样的:

admin
-----
id
name

news
-----
id
createBy
updateBy
Run Code Online (Sandbox Code Playgroud)

目前createBy和updateBy存储了admin id,我想得到createBy和updateBy的管理员名称,如何实现呢?谢谢

这是我在codeigniter中使用的

$this->db->select('*');
        $this->db->from('news,admin');
        $this->db->where('id', $id);
        $this->db->where('admin.id', 'news.updateBy');
Run Code Online (Sandbox Code Playgroud)

无论如何sql查询是受欢迎的,我会将其转换为codeigniter语法.谢谢你的帮助

Flu*_*feh 5

这是一个查询,它将提取特定的新闻ID并获取由admins表创建的值和更新的值:

select
    adu.id sd as updateID,
    adu.name as updateName,
    adc.id as createID,
    adc.name as createName
from
    news ns
        left outer join admin adu
            on ns.updateBy=adu.id
        left outer join admin adc
            on ns.createBy=adc.id
where
    news.id=1
Run Code Online (Sandbox Code Playgroud)

我已经两次加入管理员表 - 因为管理员更新可能与管理员创建不同 - 如果任一字段为空,则内部联接不起作用.执行此操作还可以选择您想要的(创建或更新),但仍然可以将它们放在同一行数据中.

如果这是你正在寻找的,那么这是一个直截了当的查询,你可能真的从阅读这个问题和答案中受益,我把它放在一起来更详细地解释这样的查询.它详细显示和解释了内部和外部联接,数据分组和聚合.

编辑:我在查询中添加了列别名,这意味着您可以选择所需的列别名.我写的和链接的文章也详细解释了:)