2016-03-09 39 views
-1

我有兩個表,第一個表是'data_table',其中包含所有信息,如(名稱,地址..等)第二個表是'members_table'它包含ID的第一個表是特定組的成員,如(組1,組2等)。現在我想要實現的是:我想從'data_table'中獲得不是特定組查詢的成員的所有id's。我試過是:Codeigniter模型使用聯合,結果兩個WHERE時結果爲假

$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(); 

我只得到那些組的成員,除了1組,但與那些誰沒有任何組的成員都沒有ID的人的ID的結果。最好的辦法是什麼?任何SQL行答案都可以。由於

回答

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();