2017-04-10 14 views
1

マイクエリ:今CodeIgniterの - クエリ内の条件

$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クエリはおそらく高速です)。 CodeIgniterので

+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

それは

$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

uは、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

私は、2つの別々のクエリを実行し、それらを組み合わせることを考え始めています。 –