2015-09-25 16 views
1

問候!,我有一個小問題,這個SQL查詢,我需要連接幾個「或」的括號。我不知道該怎麼做..所以這是例如:agroup 2 OR之後和codeigniter

SELECT a.a1, b.b1, c.c1 from a inner join b on a.a1=b.b1 inner join c on a.a1 = c.c1 where c.c2='t' and (a.a1 like %XXXX% or b.b1 like %XXXX%) 

而且這是我笨上寫代碼

$this->db->select("a.a1, b.b1, c.c1"); 
$this->db->where("c.c2",'t'); 
$this->db->like("a.a1", $match); 
$this->db->or_like("b.b1", $match); 
$this->db->join("b","a.a1 = b.b1",'inner'); 
$this->db->join("c","a.a1 =c.c1",'inner'); 

但這是輸出,顯然不是我想要什麼

SELECT a.a1, b.b1, c.c1 from a inner join b on a.a1=b.b1 inner join c on : a.a1 = c.c1 where c.c2='t' and a.a1 like %XXXX% or b.b1 like %XXXX% 
+1

爲什麼不手動編寫查詢並使用'$ this-> db-> query()'而不是使用活動記錄?無論你選擇什麼,這都可以寫。 – mituw16

+0

@ mituw16也許這是公司的標準,或許只是想學習。 –

+0

好吧,那就是我所做的,但我不知道如果這是解決問題的正確方法..或者有另一種方式寫codeigniter – ArkangelC

回答

0
$this->db->select("a.a1, b.b1, c.c1"); 
$this->db->where("c.c2",'t'); 
$this->db->group_start(); // (
$this->db->like("a.a1", $match); 
$this->db->or_like("b.b1", $match); 
$this->db->group_end(); //) 
$this->db->join("b","a.a1 = b.b1",'inner'); 
$this->db->join("c","a.a1 =c.c1",'inner'); 
+0

我這樣做,但沒有工作。得到一個錯誤: PHP致命錯誤:調用未定義的方法CI_DB_postgre_driver :: group_start() – ArkangelC