web-dev-qa-db-ja.com

CodeIgniter:選択(個別のフィールド名)MySQLクエリの実行方法

フィールド内のすべての一意の値のカウントを取得しようとしています。

SQLの例:

_SELECT count(distinct accessid) FROM (`accesslog`) WHERE record = '123'
_

CodeIgniter内でこの種のクエリを実行するにはどうすればよいですか?

$this->db->query()を使用して独自のSQLクエリを作成できることは知っていますが、$this->db->where()を使用したい他の要件があります。 ->query()を使用すると、クエリ全体を自分で記述する必要があります。

47
Ian
$record = '123';

$this->db->distinct();

$this->db->select('accessid');

$this->db->where('record', $record); 

$query = $this->db->get('accesslog');

それから

$query->num_rows();

それに向かって長い道のりを行く必要があります。

98
Mark Unwin

-> select( 'DISTINCT `field`'、FALSE)を実行することもでき、2番目のパラメーターは最初の引数をエスケープしないようにCIに指示します。 2番目のパラメーターがある場合、出力は2番目のパラメーターがない場合ではなくSELECT DISTINCT `field`になりますSELECT` DISTINCT` `field`

10
jonwayne

次のコードで試してみてください

function fun1()  
{  
   $this->db->select('count(DISTINCT(accessid))');  
   $this->db->from('accesslog');  
   $this->db->where('record =','123');  
   $query=$this->db->get();  
   return $query->num_rows();  
}
10
useranon

カウントは意図した最終値であるため、クエリパスで

$this->db->distinct();
$this->db->select('accessid');
$this->db->where('record', $record); 
$query = $this->db->get()->result_array();
return count($query);

再調整された値のカウント

1
joash

シンプルだが便利な方法:

$query = $this->db->distinct()->select('order_id')->get_where('tbl_order_details', array('seller_id' => $seller_id));
        return $query;
0
Sani Kamal