2013-04-18 76 views
1

我已經使用以下查詢從表格中選擇行。選擇不在其他表格中的記錄

Table 1: 

id description status add_date topicid 
1 xyz   0  22-3-13  5 
2 pqr   0  21-3-13  5 
3 abc   0  20-3-13  5 
4 sdd   0  22-3-13  5 


Table2: 

id  otherid  
1  2 
2  3 

此查詢爲我提供了來自table1的所有記錄,但我想選擇那些不在table2中的記錄。
像table1'id'在table2'otherid'中不存在。
在我的情況下,想要從table1中選擇id 1和4的記錄。因爲它不存在於table2中作爲'otherid'。

$topicid = 5; 

$q =$this->db->select(array(
      't1.id as id', 
      't1.description', 
      't1.topicid', 
      't1.add_date')) 
      ->from('table1 AS t1') 
      ->where('t1.topicid',$topicid) 
      ->where('t1.status',0) 
      ->order_by('t1.add_date DESC)->get(); 
+0

SELECT * FROM表1 .t1其中t1.topicid = $ topicid和ti.status = 0和不t1.id(選擇T2。從表2的頂部t2,表1作爲t1其中t2.otherid = t1.id)也許這將有助於 –

回答

2

嘗試此查詢將工作

$topicid = 5; 

$q =$this->db->select(array(
      't1.id as id', 
      't1.description', 
      't1.topicid', 
      't1.add_date')) 
      ->from('table1 AS t1') 
      ->where('t1.topicid',$topicid) 
      ->where('t1.status',0) 
      ->where('t1.id NOT IN (select otherid from table2)',NULL,FALSE) 
      ->order_by('t1.add_date DESC)->get(); 
+0

我用這個答案,謝謝。 –

+0

好工作,希望你喜歡它。 – umefarooq

0
$select = array(
       't1.id as id', 
       't1.description', 
       't1.topicid', 
       't1.add_date' 
      ); 
$this->db 
     ->select($select) 
     ->join('Table2','Table2.otherid = Table1.id','left') 
     ->where('Table2.otherid IS','NULL') 
     ->where('Table1.topicid',$topicid) 
     ->where('Table1.status',0) 
     ->get('Table1'); 
相關問題