Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2006, 09h49   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
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 :
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!
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 09h53   #2
Expert Confirmé
 
Avatar de yiannis
 
Inscription : septembre 2005
Messages : 1 499
Détails du profil
Informations personnelles :
Âge : 47

Informations forums :
Inscription : septembre 2005
Messages : 1 499
Points : 2 563
Points : 2 563
Bonjour zana74,

oui et quel est ton probleme?
__________________
"Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN
yiannis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 10h08   #3
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
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 :
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+
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 10h09   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 10h14   #5
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
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!
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2006, 12h07   #6
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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 :
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 :
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 à 19h24. Motif: Ajout balise [code][/code]
  Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 08h58   #7
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
bonjour à tous !
merci de ta réponse

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

Citation:
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
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 12h56   #8
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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



  Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2006, 13h28   #9
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 193
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 193
Points : 28
Points : 28
merci de toute réponse !
j'ai rsolu mon problème
j'ai utilisé la requête suivante
Code :
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 !!!
zana74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web