IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Compter le nombre d'éléments distincts [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Par défaut Compter le nombre d'éléments distincts
    Bonjour,

    Dans une base de données, j'ai un champ "code_postal", dans lequel se trouve une série de codes postaux divers.

    Grâce à une requête simple, je peux trouver les différents codes postaux existants (que j'affiche ici sous forme de liste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $req = 'SELECT DISTINCT LEFT(code_postal,2) AS postal
    	FROM colloque
    	WHERE code_postal <> "0" ORDER BY code_postal';
     
    $req = mysql_query($req) or die(mysql_error());
     
    echo '<ul>';
    while ($resultat = mysql_fetch_array($req)) {
    	echo '<li>'.$resultat['postal'].'</li>';
    }
    echo '</ul>';
    Ma question est la suivante : en face de chaque code postal, je voudrais indiquer le nombre de lignes concernées par le code postal. Par exemple, s'il y a 18 Girondins et 12 Landais, qu'il m'affiche :
    • 33 : 18
    • 40 : 12


    Je connais la fonction mysql_num_rows, mais comment faire sans relancer une requête pour chaque élément ?

    Je vous remercie par avance

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,

    Tu peut faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $req = 'SELECT code_postal AS postal, COUNT(1) AS nb
    	  FROM colloque
    	  WHERE code_postal <> "0"
              GROUP BY code_postal
              ORDER BY code_postal'; 
    $req = mysql_query($req) or die(mysql_error());
     
    echo '<ul>';
    while ($resultat = mysql_fetch_array($req)) {
    	echo '<li>' . $resultat['postal'] . ' : ' . $resultat['nb'] . '</li>';
    }
    echo '</ul>';

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Par défaut
    Merci pour ta réponse !

    Cependant, ça me sort les codes postaux entiers (ex : 33800) et non plus seulement le département (ex : 33).

    Du coup, comment garder le "LEFT" et appliquer le COUNT aux deux premiers caractères de "code_postal" ?

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Citation Envoyé par Msieurduss Voir le message
    Merci pour ta réponse !

    Cependant, ça me sort les codes postaux entiers (ex : 33800) et non plus seulement le département (ex : 33).

    Du coup, comment garder le "LEFT" et appliquer le COUNT aux deux premiers caractères de "code_postal" ?

    Ah désolé j'avais pas fait gaffe au LEFT, tu peut faire comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req = 'SELECT LEFT(code_postal, 2) AS postal, COUNT(1) AS nb
    	  FROM colloque
    	  WHERE code_postal <> "0"
              GROUP BY postal
              ORDER BY postal';

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Par défaut
    Impeccable, merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/09/2019, 22h36
  2. Réponses: 1
    Dernier message: 13/02/2007, 09h54
  3. Réponses: 2
    Dernier message: 21/10/2006, 10h26
  4. Réponses: 2
    Dernier message: 28/04/2006, 13h28
  5. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo