>我有一个包含 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)');
}