如何根据其明细表的最大记录行数据从主表中选择所有数据



>我有一个包含 2 条记录的表和一个包含多个与主表链接的记录的详细信息表。

可以添加或删除记录。

我想要的是当当前用户角色不是 2 时显示所有 18 条记录。

当当前用户角色为 18 时,仅显示主表中的 1 条记录,其详细信息表最大记录与具有 userId 78 的主记录链接。

这是我的代码:

$this->db->select('BaseTbl.*');
$this->db->from('table1 as BaseTbl');
if($this->roleId == '18'){
$this->db->where('(select table2.userId from table2 where table2.masterId = BaseTbl.id ORDER BY table2.id DESC LIMIT 1)', '78');
}

到目前为止,我尝试过:

$this->db->select('BaseTbl.*');
$this->db->from('table1 as BaseTbl');
$this->db->join('table2 as table2','table2.masterId = BaseTbl.id','left');
if($this->roleId == '18'){
$this->db->where('table2.userId', $this->userId);
$this->db->where('table2.id', 'max(id)');
}

现在显示该 userId 78 记录,但不显示该特定主表记录的最新记录。

我设法使用它获得了我想要的结果。

$this->db->select('BaseTbl.*');
$this->db->from('table1 as BaseTbl');
$this->db->join('table2 as table2','table2.masterId = BaseTbl.id','left');
if($this->roleId == '18'){
$this->db->where('table2.userId', $this->userId);
$this->db->where('table2.id = (select max(table2.id) from table2 where masterId = BaseTbl.id)');
}

相关内容

  • 没有找到相关文章

最新更新