2015-06-09 27 views
0

我需要在Codeigniter中的join語句中使用if語句。 我嘗試此查詢...如何在codeigniter中使用if語句加入查詢

$partners = $this->db->select("h.partner_id,hd.id as detail_id,v.*, hd.handshake_id ,sum(if(hd.result = '0',1, 0)) AS not_tested ,sum(if(hd.result = '1',1, 0)) AS positive,sum(if(hd.result = '2',1, 0)) AS negative", FALSE) 
         ->from("handshake h") 
         ->join("visitor v", 'IF(h.visitor_id = "'.$visitor_data['id'].'", h.partner_id = v.id , h.visitor_id = v.id) ', 'left',FALSE)       
         ->join("handshake_detail hd", ' hd.handshake_id = h.id AND hd.visitor_id <> "'.$visitor_data["id"].'"', 'left',FALSE)      
         ->where("h.visitor_id", $visitor_data['id']) 
         ->or_where("h.partner_id", $visitor_data['id']) 
         ->group_by("h.partner_id") 
         ->get()->result_array(); 

如果我們寫在上面的MySQL查詢的話,它的工作,但是當我嘗試笨語法,所以產生這樣的錯誤...

功能trustcrowd_1 .0.IF不存在。查看參考手冊中的'函數名稱 分析和解析'部分

所以請幫助找出正確的Codeigniter查詢語法。

+0

'加入( 「訪客V」, 'IF(h.visitor_id =「' $。visitor_data [ '身份證'。'「,h.partner_id = v.id,h.visitor_id = v.id)','left',FALSE)'檢查爲什麼在** ON **條件下使用** IF **?它是否正確? – KTAnj

+0

我也想看看你的MySql工作查詢。 – jagad89

回答

0

我的工作查詢...

$this->db->set_dbprefix(''); 

$partners = $this->db->select("hd.visitor_id partner, h.id handshake, h.utp intro_date, v.name, v.email, v.birth_date, v.location, v.gender, v.image, v.test_date, v.clinic_place, SUM(IF(hd.result = '0', 1, 0)) AS not_tested, SUM(IF(hd.result = '1', 1, 0)) AS positive, SUM(IF(hd.result = '2', 1, 0)) AS negative from tc_handshake h left join tc_visitor v on IF(h.visitor_id = '".$visitor_data['id']."', h.partner_id = v.id , h.visitor_id = v.id)", FALSE) 
      ->join("tc_handshake_detail hd", 'h.id=hd.handshake_id AND hd.visitor_id <> "'.$visitor_data["id"].'"', 'left',FALSE) 
      ->where("h.visitor_id", $visitor_data['id']) 
      ->or_where("h.partner_id", $visitor_data['id']) 
      ->group_by("h.partner_id,h.utp")     
      ->order_by("h.id", "desc") 
      ->limit($total_dis_record, $page) 
      ->get()->result_array(); 

$this->db->set_dbprefix('tc_');