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 :

[SQL] Nombre de résultats par pays


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut [SQL] Nombre de résultats par pays
    salut,
    j'ai la boucle suivante qui me retourne le nombre d'etudiant entre 2 date avec le nom de leur pays:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    if ($NomberStudentsOk == OK ){
            echo 'From '.$StartDate.' to '.$EndDate.': <br><br>';
            $i = 0;
            $sql = "SELECT refstudent FROM travels WHERE ((ArrivalDate <= '$EndDate') AND (ArrivalDate >= '$StartDate'));";
            $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
            while($data = mysql_fetch_assoc($req)) {
                $refstudent = $data['refstudent'];
                $sql2 = "SELECT LastName,FirstName,Country FROM students WHERE IdStudent = '$refstudent'";
                $req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
                while($data = mysql_fetch_assoc($req2)) {
                    $LastName = $data['LastName'];
                    $FirstName = $data['FirstName'];
                    $Country = $data['Country'];
                }
                echo '- '.$FirstName.' '.$LastName.' from '.$Country.'<br>';
                $i++;
            }
            echo '<br>There is '.$i.' resultats<BR>';
        }
    je voudrai egalement compter le nombre d'etudiant par pays mais je n'y arrive pas a cause de la premiere boucle while qui me renvoye l'id des etudiants pour qui les dates corespondent.

    avez vous une idee?
    merci

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    Alors, déjà tu devrais éviter parce que là tu fais une requête par étudiant... pas terrible, vaut mieux faire une petite jointure au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT s.LastName, s.FirstName, s.Country
    FROM students s
       INNER JOIN travels t
          ON s.IdStudent = t.refstudent
    WHERE t.ArrivalDate BETWEEN '$StartDate' AND '$EndDate'
    en plus, BETWEEN est mieux que '>= AND <='

    déjà ceci d'évite de faire une requête par étudiant ce qui est très très couteux.

    Ensuite, pour compter le d'étudiant par Pays, tu as plusieurs choix...

    Le premier est de faire une seconde requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT COUNT(*) AS count, s.Country
    FROM students s
       INNER JOIN travels t
          ON s.IdStudent = t.refstudent
    WHERE t.ArrivalDate BETWEEN '$StartDate' AND '$EndDate'
    GROUP BY s.Country
    ou alors d'inclure le compte dans le parcours de ta requête :

    avant le while : dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!isset($count[$data['Country']]))
       $count[$data['Country']] = 0;
    ++$count[$data['Country']];
    après tu n'as plus qu'à parcourir le tableau $count pour avoir le nombre d'étudiant par pays

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    super, j'ai reussi grace a ton code, j'etais loin de faire ca mais maintenant je le reutilise bcp!

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

Discussions similaires

  1. SQL : nombre de produits par fournisseur
    Par kaayna dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/08/2009, 22h13
  2. [SQL] Je souhaite limiter le nombre de résultat par page
    Par kilian67 dans le forum PHP & Base de données
    Réponses: 38
    Dernier message: 20/08/2007, 17h55
  3. [SQL] Afficher X résultats par page ! (LIMIT)
    Par CaLeDo dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 13/08/2007, 23h21
  4. [MySQL] Lister un nombre de résultats par récurrence
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/02/2007, 20h53
  5. [SQL] Nombre de connexion par jour
    Par Oberown dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/10/2005, 15h52

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