web-dev-qa-db-fra.com

CodeIgniter: Comment faire une requête MySQL Select (Distinct Fieldname)

J'essaie de récupérer un décompte de toutes les valeurs uniques dans un champ.

Exemple SQL:

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

Comment puis-je faire ce genre de requête à l'intérieur de CodeIgniter?

Je sais que je peux utiliser $this->db->query() et écrire ma propre requête SQL, mais j'ai d'autres exigences pour lesquelles je veux utiliser $this->db->where(). Si j'utilise ->query() bien que je doive écrire la requête entière moi-même.

47
Ian
$record = '123';

$this->db->distinct();

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

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

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

puis

$query->num_rows();

devrait aller un long chemin vers elle.

98
Mark Unwin

Vous pouvez également exécuter -> select ('DISTINCT `field`', FALSE) et le deuxième paramètre indique à CI de ne pas échapper au premier argument. Avec le deuxième paramètre, la sortie serait SELECT DISTINCT `field` au lieu de sans le deuxième paramètre, SELECT` DISTINCT` `field`

10
jonwayne

essayez-le avec le code suivant

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

Étant donné que le nombre est la valeur finale souhaitée, dans votre requête, passez

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

Le compte de la valeur réaccordée

1
joash

Manière simple mais utile:

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