Sql 使用JOIN的Codeigniter模型,当两个WHERE';两个字母组合在一起

Sql 使用JOIN的Codeigniter模型,当两个WHERE';两个字母组合在一起,sql,codeigniter,model,Sql,Codeigniter,Model,我有两个表,第一个表是'data\u table',它包含所有信息,如(姓名、地址等)。第二个表是'members\u table'它包含第一个表的id,该表是某些组的成员,如组1、组2等等现在我想要实现的是:我想从'data\u table'中获取所有id,它们不是所查询的特定组的成员。我尝试的是: $this->db->select(); $this->db->from('data_table'); $this->db->join('memb

我有两个表,第一个表是
'data\u table'
,它包含所有信息,如(姓名、地址等)。第二个表是
'members\u table'
它包含第一个表的id,该表是某些组的成员,如组1、组2等等现在我想要实现的是:我想从
'data\u table'
中获取所有
id,它们不是所查询的特定组的成员。我尝试的是:

 $this->db->select(); 
  $this->db->from('data_table'); 
  $this->db->join('members_table', 'data_table.id = members_table.id', 'left');   
 $this->db->where('members_table.id', NULL); 
$query = $this->db->get(); 
return $query->result_array();   
这是我的查询,用于获取尚未在members_表中的所有名称,该表显示布尔值为TRUE的结果,但如果添加了行:

$this->db->where('members\u table.group!=','group1')

我的问题是这样的:

$this->db->select(); 
$this->db->from('data_table'); 
$this->db->join('members_table', 'data_table.id = members_table.id', 'left');   
$this->db->where('members_table.id', NULL); 
$this->db->where('members_table.group !=', 'group1'); 
$query = $this->db->get(); 
return $query->result_array();
我得到0个结果。例如,如果我想检查哪些人还不是group1的成员,但可能已经是另一个组的成员,或者根本不是任何组的成员。如果我提出疑问:

$this->db->select(); 
$this->db->from('data_table'); 
$this->db->join('members_table', 'data_table.id = members_table.id', 'left');   
 $this->db->where('members_table.group !=', 'group1');
 $query = $this->db->get(); 
return $query->result_array();  

我只得到除group1之外的组成员的id的结果,但没有任何尚未成为任何组成员的id。最好的办法是什么?任何SQL行答案都可以。谢谢

如果我理解正确,下面应该可以

$query = $this->db
    ->select("dt.*")
    ->from("data_table AS dt")
    ->join("members_table AS mt1","dt.id = mt1.id", "left")
    ->join("members_table AS mt2","dt.id = mt2.id","left")
    ->where("mt1.id",NULL)
    ->or_where("mt2.group !=","group1")
    ->get();
return $query->result_array();