Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 01/10/2006, 16h58   #1
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
Par défaut Problème requete : groupby

Bonjour,

Je voudrais dans mon espace administration compter le nombre de comptes crées par jour.

j'ai donc fait une requête:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
// ON crée la requête SQL comptes par jour
 
$query = "SELECT date_reg,COUNT(*) FROM membres GROUP BY date_reg ";
 
 
$result = mysql_query($query) OR die($query . ' - ' . mysql_error());
 
echo '<table><tr><th bgcolor="#FFBBFF" colspan="2">Comptes crées par jour; </th></tr>' . "\n";
while ($ligne = mysql_fetch_array($result)) {
  echo '<tr><td align="center" bgcolor="#E8E8E8">' . $ligne[0] . '</td>
		<td align="center">' . $ligne[1] . '</td></tr>' . "\n";
}
echo '</table>' . "\n";
le probleme est que mon groupby n'est pas pertinent car le format de date est : 13/09/06 12:29:11.....donc j'ai une ligne par enregistrement à la fin

comment faire pour que le groupby ne se fasse que sur la date (9 premiers caactères) .....fonction left ????
une idée ?

merci !
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2006, 20h49   #2
Inscrit
 
Inscription : décembre 2004
Messages : 317
Détails du profil
Informations personnelles :
Âge : 23
Localisation : Singapour

Informations forums :
Inscription : décembre 2004
Messages : 317
Points : 437
Points : 437
GROUP BY DATE(date_reg)

tout simplement !
winzou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 20h43   #3
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
merci ....j'ai maintenant un petit probleme de classement chronologique...
c'est classé comme ça :
Code :
1
2
3
4
5
6
01/10/06 00:06:02 14 
02/10/06 01:04:44 33 
13/09/06 12:26:07 1 
14/09/06 11:05:42 1 
17/09/06 01:51:51 3 
18/09/06 08:42:04 4
ma requete:
Code :
$query = "SELECT date_reg,COUNT(*) FROM membres GROUP BY DATE(date_reg) ORDER BY date_reg ASC ";
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 21h13   #4
Membre du Club
 
Inscription : décembre 2004
Messages : 147
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 147
Points : 65
Points : 65
Perso, dans ma base de données, mes dates sont au format américain. Ce qui rend plus simple pour faire les ORDER BY.

Voici les fonctions PHP que j'utilise ensuite pour convertir les dates. S'il y a des gens qui voient des améliorations à faire, je suis preneur.

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
 
FUNCTION US2FR($date){
 
	$partie = explode(" ",$date);
 
	$data = explode("-",$partie[0]);
 
	$FR = $data[2]."/".$data[1]."/".$data[0]." ".$partie[1]; 
 
	RETURN $FR;
 
}
 
 
 
FUNCTION FR2US($date){
 
	$partie = explode(" ",$date);
 
	$data = explode("/",$partie[0]);
 
	$US = $data[2]."-".$data[1]."-".$data[0]." ".$partie[1]; 
 
  RETURN $US;
 
}
dest est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 21h41   #5
Membre habitué
 
Inscription : juillet 2004
Messages : 140
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2004
Messages : 140
Points : 149
Points : 149
Bonjour,

Citation:
Envoyé par heteroclite
ma requete:
Code :
$query = "SELECT date_reg,COUNT(*) FROM membres GROUP BY DATE(date_reg) ORDER BY date_reg ASC ";
Pour que ton select soit correct, il ne faut plus utiliser adte_reg mais DATE(date_reg)

Code :
1
2
 
SELECT DATE(date_reg),COUNT(*) FROM membres GROUP BY DATE(date_reg) ORDER BY DATE(date_reg) ASC
mdevlieg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 22h05   #6
Membre du Club
 
Avatar de heteroclite
 
Inscription : juin 2006
Messages : 147
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 147
Points : 50
Points : 50
merci et une derniere petite question comment fait on pour afficher un message lorsque la requete ne renvoit aucun enregistrement ?

merci !
heteroclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2006, 19h00   #7
Inscrit
 
Inscription : décembre 2004
Messages : 317
Détails du profil
Informations personnelles :
Âge : 23
Localisation : Singapour

Informations forums :
Inscription : décembre 2004
Messages : 317
Points : 437
Points : 437
ben ca c'est en PHP

Code :
1
2
3
4
5
6
7
8
9
10
11
$query = 'blabla';
$res = mysql_query($query);
 
IF($row = mysql_fetch_assoc($res))
{
// il y a des lignes (au moins une)
}
else
{
// il n'y a pas de ligne
}
winzou 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 12h45.


 
 
 
 
Partenaires

Hébergement Web