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.
$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.
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`
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();
}
É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
Manière simple mais utile:
$query = $this->db->distinct()->select('order_id')->get_where('tbl_order_details', array('seller_id' => $seller_id));
return $query;