COUNT(*) Explication ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : COUNT(*) Explication ?

par Xenon_54 » 17 oct. 2005, 19:17

Tu peux aussi récupérer ainsi:
$row['COUNT(*)'] si tu utilises mysql_fetch_assoc() ou mysql_fetch_array()

Un exemple avec print_r() te montrera le contenu des variables tableaux retournées par ces fonctions.

par pjl » 17 oct. 2005, 18:58

Une remarque au niveau du AS utilisé.
Comme COUNT est un mot réservé, je mettrais plutôt total.

Code : Tout sélectionner

SELECT COUNT(*) AS total FROM posts WHERE 1
Autant prendre l'habitude de ne pas utiliser les mots réservés.

par Cyrano » 17 oct. 2005, 18:53

Non, tu as parfaitement raison: l'utilisation de count est infiniment plus rapide. Imagine quelques instant la situation suivante: tu as une base de données avec 800 000 entrées réparties sur un nombre conséquent de table: tu veux compter en te faisant une super jointure de la mort : Soit tu utilises COUNT, soit un SELECT : si tu utilises un SELECT et que le retour attendu avoisine par exemple les 350 000 lignes, ça va prendre un temps notablement plus long que de te renvoyer un nombre unique avec COUNT

par Number » 17 oct. 2005, 18:49

Merci beaucoup ;-)

Avant j'utilisais mysql_num_rows ...
mais je penses (si je ne me trompe pas) que cela est plus lourd ..
Vu que sql envoi tt les données (avec le select *) non ?

Si j'me trompes qu'elle est la difference entre les deux ?

par Cyrano » 17 oct. 2005, 18:43

Bon non on va pas te crier dessus, d'abord parce qu'il n'y a pas de raison pour ça et ensuite parce qu'on est tous passé par ce stade de l'apprentissage.

Tu a fait un court-circuit dans la récupération du résultat. Voici ton code remanié un peu : j'ai jouté pas mal de commentaires, lis-les bien, l'explication est dedans :)
<?php
    //.....
    case 'Topics':
    mysql_select_db('forum') or die ("Erreur selection de db");
    /* D'abord on établit la requête SQL */
    $sql = "SELECT COUNT(*) AS count FROM posts";
    /* Ensuite on l'exécute */
    $query8 = mysql_query($sql) or die ('Erreur dans la requete');
    /* $query8 est maintenant une "ressource" et non une valeur dite "scalaire" : on va 
       l'utiliser dans d'autres fonctions pour récupérer le résultat voulu */
    $count = mysql_result($query8, 0);
    /* Maintenant le résultat a été assigné à la variable, on peut retourner cette valeur. */
    return $count;
    break;
?>

COUNT(*) Explication ?

par Number » 17 oct. 2005, 18:34

Re tout le monde et bonne soirée ;-)

Je sent qu'on vas me crier dessus :-(
Je viens pour une tite question bête ..

j'men sort ps avec une requetes juste pour compter le nbr d'enregistrement dans une table.

j'ai une table avec 694 enregistrement et je voudrais juste recuperer ca avec la requetes.
J'ai cherché et j'ai trouver count(*)

Mais ou est l'erreur ?
case 'Topics':
mysql_select_db('forum') or die ("Erreur selection de db");
$query8 = mysql_query("SELECT COUNT(*) AS count FROM posts WHERE 1") or die ('Erreur dans la requete');
return $count;
break;
Je n'arrive pas a récuperer count ...
J'ai vu que le AS n'etait pas obligatoire...
Dois-je utiliser msql_fetch_array() ?

merci bcp