Forum Clubic

Compter les occurences ayant la meme valeur dans un champ ?

Salut , j’ai un soucis a programmer un leger truc.

J’aimerair arriver à mettre dans une variable un nombre :
le nombre d’entrées ayant la meme valeur dans le champ nid.

exemple:

j’ai 8 entrées avec 12 dans nid
je souhaite demander à ma base Combien d’entrée ont 12 dans le champ nid.
et elle me retourne 8.

Merci d’aider le débutant que je suis :stuck_out_tongue:

J’ai rien compris. Et surtout, je sais même pas dans quel langage c’est… (à défaut d’être du français).

on pourré penser que c du php/mysql etant donné kon é ds le forum …php/mysql

tu peux essayer: select count(*) from ta_table group by ton_champ

Ca n’empêche pas de remettre le langage dans le titre…

Eviter count(*), qui pour certaines bases est associé à des traitements de nettoyage

select count(1) from ma_table where nid=12

hummm

c bien comm traitement, il repond bien a l’exemple, mais ne fonctionne plsu si tu traites avec un autre id que 12… le group by va grouper ton champ nid sur t numéro identiques (12, 13, 14…) et le count simplement te renvoyer le nombre d’occurence attaché a chaque group by… a toi de voir

pr ton info :
“that shows count(*) and count(1) are IDENTICAL”
http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1156151916789
c pas moi ki le dit c oracle :slight_smile:

C’était mon but : répondre à l’exemple

Toujours pas convaincu… J’ai été voir
http://www.oracledba.co.uk/tips/count_speed.htm

"Without going into the large history of this topic, different versions of Oracle mandated different approaches to best counting records.

However, in the more recent releases of Oracle, the fast full index scan (bitmap especially) has generally become the most prudent way to count the records. Thankfully, under the cost optimiser, Oracle now performs this for most of combinations of “count(*)” that DBA’s have advocated in the past, thus any of them will perform equivalently as can be seen from the examples below "

-> OK, c’est pareil pour les versions récentes d’Oracle, après, faut voir…
J’ai trouvé à gauche et à droite des infos comme quoi, c’est plus rapide avec count(1)
http://www.techonthenet.com/sql/count.htm
plus rapide avec count(*)
http://rhea.redhat.com/bboard-archive/webdb/0006r9.html

Donc, je vais garder mon count(1) :wink:

[myself] > me semblait justement que le COUNT(*) était optimisé, au moins quand il n’y a pas de conditions.

Ca à l’air d’être le problème… Tout dépend de la BD, de la version, des personnes qui t’ont donné des infos…

On m’avait dit qu’au count() avec Oracle, il effectuait un “clean-up” au niveau de la base, ce qui justifiait que le premier count() soit plus long… J’ai fait confiance, je ne me suis même pas demandé quelle version ou quelle base…

J’ai fait le perroquet, et je me suis planté (cf. réponse de ctrl_alt_del), au moins partiellement…