CodeIgniter: Как сделать выбор (отличительное имя поля) MySQL Query - PullRequest
46 голосов
/ 18 марта 2009

Я пытаюсь получить количество всех уникальных значений в поле.

Пример SQL:

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

Как я могу выполнить такой запрос внутри CodeIgniter?

Я знаю, что могу использовать $this->db->query() и написать собственный SQL-запрос, но у меня есть другие требования, для которых я хочу использовать $this->db->where(). Если я использую ->query(), хотя я должен написать весь запрос сам.

Ответы [ 4 ]

96 голосов
/ 18 марта 2009
$record = '123';

$this->db->distinct();

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

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

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

тогда

$query->num_rows();

должно пройти долгий путь к нему.

10 голосов
/ 10 июня 2014

Вы также можете запустить -> select ('DISTINCT `field`', FALSE) , и второй параметр говорит CI не экранировать первый аргумент. Со вторым параметром вывод будет SELECT DISTINCT `field` вместо второго параметра, SELECT` DISTINCT` `field`

10 голосов
/ 19 марта 2009

попробуйте с помощью следующего кода

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();  
}
1 голос
/ 15 ноября 2018

Так как счетчик является конечным значением, на которое нужно ответить, в вашем запросе передайте

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

Количество возвращаемых значений

...