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] Problème avec nombre d'enregistrements dans une table


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut [SQL] Problème avec nombre d'enregistrements dans une table
    bonjour,
    j'ai est un tableau de 3 colonnes dans la 1 colonne il m'affiche les trange d'age
    la 2 colonne il affiche pour chaque tranche d'age son le nb appel.

    à la dernière ligne du tableau on a le nombre total des appels à partir de là qu'on peux calculer la taux d'appel de chaque tranche d'age par rapport au nombre total des appels on utilisant la formule
    taux=(100*nbappel)/totalnbappel
    la requete utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = "SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage;";
    merci de toute intervention!

  2. #2
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Bonjour zana74,

    oui et quel est ton probleme?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    perdonne moi,

    mon problème:
    j'utilise une boucle while qui permet de calculer le nbtotal des appels, donc ce fameux taux il le calcule au meme temps ce qui n'est pas une bonne idée, car à la première itteration de la boucle le nbtotal des appels =nbappel ce qui fait le taux est faux. j'ai essayé de calculer le nbtotal des appels à l'exterieur de la boucle ça n'a pas marché.

    code de la boucle:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <TD><TABLE border=1 cellpadding=2 cellspacing=0 bordercolor="#396BAD">
    <TR bgcolor="white">
    <TD class=titre5>AGES DES DEMANDEURS</TD>
     
    <TD class=titre6 width=100>NBRE D'APPEL</TD>
     
    <TD class=titre6 width=100>TAUX</TD>
     
    </TR>
    <?
    $query = "SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage;";
    $result=mysql_query($query)or die(mysql_error().':<br>'.$query);
    $totenreg=mysql_num_rows($result);
     
     
    if ($totenreg==0)
    echo "<td colspan=9><h5>LE NOMBRE D'APPELS EST ZERO</td>";
    else
    {
     
    $totappel=0;$tauxtotal=0;
    while ($row = mysql_fetch_array($result))
    {
     
    echo "<td><h5>".$row["trancheage"]."</td>";
    echo "<td><h5>".$row["nbappel"]."</td>";
    $totappel=$totappel+$row["nbappel"];
    $taux=(100*$row["nbappel"])/$totappel;
    echo "<td><h5>$taux%</td>";
    $tauxtotal=$tauxtotal+$taux;
    echo "<tr>";
    }}
    //echo "</table>";
    ?>
    <TR>
    <TD class=titre5 bgcolor="#396BAD"><font color="white">Total </font></TD>
     
    <TD class=titre7 bgcolor="#396BAD"><font color="white"><? ; 
    	  echo $totappel; ?></font></TD>
    <TD class=titre7 bgcolor="#396BAD"><font color="white"><? ; 
    	  echo "$tauxtotal % ";?></font></TD>
    </TR>		   
    </table>		
    </td>
     
    </TABLE>
    A+

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par yiannis
    Bonjour zana74,

    oui et quel est ton probleme?
    Et surtout on se calme on prend sa respiration et on essaie de faire des phrases en français

    Une remarque au passage le point-virgule au bout de la requête est inutile.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par JWhite
    Et surtout on se calme on prend sa respiration et on essaie de faire des phrases en français

    Une remarque au passage le point-virgule au bout de la requête est inutile.
    c vrais pour le point-virgule, mais il fait aucun mal je crois!

  6. #6
    Invité(e)
    Invité(e)
    Par défaut et ca , ca marcherait pas !!
    Citation Envoyé par zana74
    bonjour,
    j'ai est un tableau de 3 colonnes dans la 1 colonne il m'affiche les trange d'age
    la 2 colonne il affiche pour chaque tranche d'age son le nb appel.

    à la dernière ligne du tableau on a le nombre total des appels à partir de là qu'on peux calculer la taux d'appel de chaque tranche d'age par rapport au nombre total des appels on utilisant la formule
    taux=(100*nbappel)/totalnbappel
    la requete utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = "SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage;";
    merci de toute intervention!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT trancheage,(100*nbappel)/totalnbappel from (
     
    SELECT trancheage,COUNT(*) as nbappel
    FROM personne_appelante p, age
    where p.idtrancheage=age.idtrancheage
    and dat_appel between '$ddeb' AND '$dfin' 
    GROUP BY trancheage ) 
     
    group by trancheage
    Dernière modification par Arnaud F. ; 12/08/2006 à 20h24. Motif: Ajout balise [code][/code]

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    bonjour à tous !
    merci de ta réponse

    ça ne marche pas, et voila message d'erreur!!

    Every derived table must have its own alias:
    SELECT trancheage,(100*nbappel)/totalnbappel as taux from ( SELECT trancheage,COUNT(*) as nbappel FROM personne_appelante p, age where p.idtrancheage=age.idtrancheage and dat_appel between '2006-07-01' AND '2006-08-05' GROUP BY trancheage ) group by trancheage

  8. #8
    Invité(e)
    Invité(e)
    Par défaut normal !!
    essaye de creuser un peu !! cette requette doit fonctionnner

    ton totalnbappel doit être un paramètre .

    pour l'obtenir tu fais une sum() de tous nbappels.

    dans l'exmeple je l'ai positionné à 1000

    ajoute des alias sur toutes les tables par exemple comme ceci :

    SELECT t1.trancheage,(100*t1.nbappel)/1000 as taux from
    ( SELECT trancheage,COUNT(*) as nbappel FROM personne_appelante p,
    age a where p.idtrancheage=a.idtrancheage
    and a.dat_appel between '2006-07-01' AND '2006-08-05'
    GROUP BY trancheage ) t1
    group by trancheage




  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    merci de toute réponse !
    j'ai rsolu mon problème
    j'ai utilisé la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req="SELECT * FROM personne_appelante p, age 
    where p.idtrancheage=age.idtrancheage 
    and dat_appel between '$ddeb' AND '$dfin'";
    pour avoir le total des appels pour toutes les tranches d'age puis j'ai executé la rquete que j'ai posté au debut pour avoir le taux de chaque tranche age lpar rapport au total des appels.

    merci !!!

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

Discussions similaires

  1. [SQL] Compter le nombre d'occurences dans une table par valeur
    Par SpaceFrog dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/04/2008, 18h22
  2. Nombre d'enregistrement dans une table
    Par mulot49 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/12/2007, 15h55
  3. limiter le nombre d'enregistrements dans une table
    Par Vincent_59 dans le forum Modélisation
    Réponses: 8
    Dernier message: 09/07/2007, 11h01
  4. Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/08/2006, 14h21
  5. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 20h07

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