2017-04-10 34 views
1

我的查詢:笨 - 在查詢條件

$CI->db->select('UserID, Email, Alias, Status, Age'); 
$CI->db->from('Users'); 
$CI->db->where('Status', 'Available'); 
$query = $CI->db->get(); 
$result = $query->result(); 
//next comes a function that sends $result to the client app 

現在,它的工作原理,但對於年齡記錄< 18,我想獲得的別名字段爲空,所以認爲這個值是不發送給用戶。

如何通過MySQL查詢來實現該目標?當然,這可以通過PHP foreach循環來完成,但我寧願避免由於操作時間成本(MySQL查詢可能會更快)導致的這種情況。

+0

$ CI-> DB->其中( '年齡', '<' '18'); –

+0

你可以使用多個像上面的例子 –

回答

0

您可以修復SQL中使用MySQL的條件這個問題:

查詢會是這樣的:

SELECT UserID, Email, IF(Age<18, Alias, "") as Alias, Status, Age FROM Users Where Status='Available'; 

可以在CI實現查詢波紋管:

$CI->db->select('UserID, Email, IF(Age<18, Alias, "") as Alias, Status, Age'); 
$CI->db->from('Users'); 
$CI->db->where('Status', 'Available'); 
$query = $CI->db->get(); 
$result = $query->result(); 
+0

這是工作!非常感謝你! –

0

CI中是這樣做......

$where=array('Age <'=>'18', 
       'Status'=>'Available'); 
$this->db->where($where); 
$this->db->from('Users'); 
$query = $this->db->get(); 
if($query->num_rows()>0) 
{ 
    return $query->result_array(); 
} 
else 
return FALSE; 
+0

是的,但是這將使得選擇年齡在18歲以上的所有記錄。並且我需要不同的東西:年齡低於18歲的記錄也應該被選擇,但是沒有別名字段。別名字段應該從它們中刪除。 –

+0

你是說你需要上面和下面的數據和18 .. ??: -/ – Vimal

0
$CI->db->select('UserID, Email, if(Age < 18) as Alias, Status, Age'); 
    $CI->db->from('Users'); 
    $CI->db->where('Status', 'Available'); 
    $query = $CI->db->get(); 
    $result = $query->result(); 

,或者你也可以寫這樣的查詢:

$query=$this->db->query("select UserID, Email,if(Age < 18) as Alias, Status, Age from users where status='Available'"); 
+0

我只需要從Age <18的記錄中去掉別名字段,上面的代碼做了一些不同的事情,它只選擇年齡<18的記錄。 –

+0

我開始考慮運行兩個單獨的查詢,然後將它們組合在一起。 –