我有两个表,第一个表是'data_table'
,其中包含所有信息,如(name,address..etc。),第二个表是'members_table'
,它包含了id的内容。第一个表是特定组的成员(组1,组2等等)。现在我想要实现的是:我想从id's
得到所有'data_table'
不是查询的特定组的成员。我试过的是:
$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_table中显示结果的所有名称,该结果是布尔值TRUE但是如果添加了行:
$this->db->where('members_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的结果,但是根本没有任何群组成员的身份证。什么是最好的方式?任何SQL行答案都没问题。感谢
答案 0 :(得分:0)
如果我理解正确,以下内容应该有效
$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();