フィールド内のすべての一意の値のカウントを取得しようとしています。
SQLの例:
_SELECT count(distinct accessid) FROM (`accesslog`) WHERE record = '123'
_
CodeIgniter内でこの種のクエリを実行するにはどうすればよいですか?
$this->db->query()
を使用して独自のSQLクエリを作成できることは知っていますが、$this->db->where()
を使用したい他の要件があります。 ->query()
を使用すると、クエリ全体を自分で記述する必要があります。
$record = '123';
$this->db->distinct();
$this->db->select('accessid');
$this->db->where('record', $record);
$query = $this->db->get('accesslog');
それから
$query->num_rows();
それに向かって長い道のりを行く必要があります。
-> select( 'DISTINCT `field`'、FALSE)を実行することもでき、2番目のパラメーターは最初の引数をエスケープしないようにCIに指示します。 2番目のパラメーターがある場合、出力は2番目のパラメーターがない場合ではなくSELECT DISTINCT `field`になりますSELECT` DISTINCT` `field`
次のコードで試してみてください
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();
}
カウントは意図した最終値であるため、クエリパスで
$this->db->distinct();
$this->db->select('accessid');
$this->db->where('record', $record);
$query = $this->db->get()->result_array();
return count($query);
再調整された値のカウント
シンプルだが便利な方法:
$query = $this->db->distinct()->select('order_id')->get_where('tbl_order_details', array('seller_id' => $seller_id));
return $query;