2012-10-22 58 views
1

所以我承認標題是有點,混亂,我很抱歉,因爲我不知道該怎麼做,所以開放的建議那裏。無論如何在實際的問題。我有一個查詢,工作正常,在大多數情況下,但我仍然得到了一些錯誤的結果。以及可以理解的。因爲這是如何形成查詢。對許多人來說,還有許多人或許鬆散地串在一起。我需要做的是包裝一個集()的where子句中,然後在另一個()我不知道,如果是有道理的,以人的and那麼剩餘的一套條款。笨數據庫,在那裏有多個條款而另一種

基本上,如果我是手動輸入查詢買斷它會看起來像..

select * from my_table 
where (cond1 = this and cond2 = that) 
and (cond2 != something or cond3 > other) 

不能確定如何實現這一目標用笨的活動記錄。我現在擁有的是。

$this->db->select('user_event_invite.*, game_bridge.*, user_event.*, user_event.location as bizfo') 
->from('user_event') 
->join('game_bridge', 'user_event.gID = game_bridge.gID') 
->join('user_event_invite', 'user_event_invite.eID = user_event.eID') 
->where('user_event_invite.friendID', $mID) 
->where('user_event.isactive', 0) 
->where('user_event_invite.isactive', 0) 
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time())) 
->where('user_event.ends !=', '0000-00-00 00:00:00') 
->or_where('yes > ', 0) 
->or_where('no > ', 0) 
->or_where('maybe > ', 0); 

但是我想最終在一個組中的所有這些具體條款..

->where('user_event_invite.friendID', $mID) 
->where('user_event.isactive', 0) 
->where('user_event_invite.isactive', 0) 
->where('user_event.ends >=', $this->genfunc->unixToMySQL(time())) 
->where('user_event.ends !=', '0000-00-00 00:00:00') 

然後結合該組並與該另一組。

->or_where('yes > ', 0) 
->or_where('no > ', 0) 
->or_where('maybe > ', 0); 
+0

選中此http://stackoverflow.com/questions/6470267/grouping-where-clauses-in-codeigniter – xelber

回答

2

因此,CodeIgniter不支持「包裝」你的OR和AND SQL語句,至少不使用它的抽象層。混合或與AND語句不建議用笨。

你可以試着理解你與$this->db->last_query()

執行查詢你也可以試試這個子查詢庫,看它是否能夠幫助你: http://labs.nticompassinc.com/CodeIgniter-Subqueries/

或者你可能只需要使用一些RAW SQL在你的情況下。