Vous n'êtes pas identifié(e).
Pages :: 1
hello !
j'ai actuellement en tete de faire un système de statistique, et ca marche plutot bien , cependant j'aimerai faire évoluer le systeme en affichant au mois ou a l'année.
J'ai une Bdd contenant des datetime de chaque heure ( a 15 min pres ) (exemple : 2009-12-29 01:17:44), et je les extraits avec un extract(month FROM date).
( j'ai vue aussi que l'on pouvait utiliser month(), il y a une préférence a vos yeux ? )
Le probleme c'est que je n'ai pas su crée un code pertinant me permetant d'additioner toute les donnée de toute les heures pour un jour ( si on veut voir un janvier par exemple ), ou pareille pour la vue en année.
je sais bien recupéré mes données mais je ne sais absolument pas comment les trier...
une solution vous vient a l'esprit ?
Merci !
Hors ligne
Je ne suis pas sûr de tout comprendre mais tentons.
Tu as une requête qui fait des calculs et patati et patata mais le résultat n'est pas trié. Et si tu mettais dans cette requête un ORDER BY timestamp ?
Il te ferrai toujours les mêmes calculs mais en partant des enregistrements triés, ce qui te donnera un solution triée.
Cela rentre-t-il dans ton problème ?
Hors ligne
hello
merci pour cette reponse mais nan
Je te fais un topo :
il sagit de statistique sur la présence de joueur sur un jeu en ligne donc dans ma base j'ai : femme homme autre ( et date )
l'affichage de base ( qui marche actuellement ) affiche le nombre de joueur sur une journée pour chaque heures ( 00h - 23h ).
ce que je veux c'est afficher dans le mode Mois : les jours du mois.
et en mode année : 12 mois.
Mon soucis actuellement, c'est que une fois la requete sql passé j'obtient effectivement toute les datetime sur le mois ou l'année voulue, mais il ne faut pas oublier que chaque jour est composer de 24 enregistrement ( ou moin en cas de panne de serveur ).
en bref il me faut additionner toutes les heure ensemble pour chaque jours pour le mode mois, et les tout les jour d'un mois ensemble pour le mode année.
merci,
Jiinn.
Hors ligne
Merci tout de meme
je vais retenter plus tard un bout de code, j'etais pas du tout satisfait alors j'ai tout effacer ^_^;
je le posterais plus tard.
Jiinn
Hors ligne
Saluton,
Attention à ne pas raisonner uniquement sur MONTH() mais aussi sur YEAR(), car deux datetimes peuvent avoir la même valeur de MONTH() mais des YEAR() différents.
Même chose pour DAY(), au demeurant.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Oui pas de problème sur ce coté la c'est histoire d expliquer la manœuvre utilisé .
Merci
Hors ligne
Hello !
Bon ben j'ai tenter ceci mais ca ne passe pas ...
pourtant ca doit me retourner le nombre de femme pour chaque jour et s'additionner, puis l'afficher.
( j'ai fait que les femmes pour un simple test et sur un affichage au mois ( vue des jours avec addition des joueurs )
voici la requete sql : $sql = "SELECT * FROM table WHERE YEAR(date) = $postYear and MONTH(date) = $postMonth";
//Request
$query = mysql_query($sql);
//Add Data
while($array = mysql_fetch_array($query))
{
// Calcule du nombre de jour dans un mois
$dateDayNumber = date( "j", mktime(0, 0, 0, date("m", strtotime($array['date'])) + 1, 1, $postYear) - 1 );
// Retourne le jour en chiffre
$dateDay = date("d", strtotime($array['date']));
// Tableau[jour en chiffre] += nombre de femme dans la bdd sur cette heure.
$tabWomen[$dateDay] += $array['femme'];
}
for ($i = 1; $i <= $dateDayNumber; $i++) {
// spécifique a lib de stat, remplace par exemple un echo $tabWomen[$i];
$data_all->add_data_tip( $tabWomen[$i], "test");
}
}
Jiinn
Dernière modification par Jiinn (08-01-2010 22:59:12)
Hors ligne
La solution est évidemment à rechercher en priorité du côté de SQL, en jouant sur la clause GROUP BY (éventuellement WITH ROLLUP), mais, sans la structure exacte des tables, difficile de proposer une solution cohérente.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Voici la table, j'ai tenter GROUP BY et j'ai un résultat satisfaisant mais incorrecte je travaille dessus.
Cette requête devrais fonctionner mais elle ne me renvoie que la première heure sans addition de chaque jour ... :
Dernière modification par Jiinn (09-01-2010 14:34:19)
Hors ligne
Saluton,
Tout d'abord, pourquoi SELECT *, surout sur un GROUP BY, ça n'a vraiment aucun sens.
Rappel : La guerre des étoiles
Ensuite pourquoi trois colonnes pour une seule info ?
Il suffit de convenir d'un code genre 1 pour femme, 2 pour homme et 3 pour autre.
Enfin très mauvais plan de donner un mot réservé SQL (DATE) comme nom à une colonne
Pour connaitre le nombre de femmes
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Hello,
je ne peux pas utiliser ce type de table : pour today 12h00 > 12 femme 23 homme 6 autre
a moin de faire plusieur enregistrement du style 12h00 12 femme(code 1) 0 , 12h00 23 homme(code 2) ...
Pour afficher un mois par exemple Janvier je ne peux pas non plus utiliser SELECT DAY(time)
sinon je ne savais pas pour le mot réservé, et le dossier sur la guerre des étoiles est instructif , --> je corrige ca *honte*
par contre dans ton exemple je ne comprend pas bien le AS jour et GROUP BY jour ?
Jiinn
Dernière modification par Jiinn (10-01-2010 13:16:33)
Hors ligne
je ne peux pas utiliser ce type de table : pour today 12h00 > 12 femme 23 homme 6 autre
a moin de faire plusieur enregistrement du style 12h00 12 femme(code 1) 0 , 12h00 23 homme(code 2) ...
Ce qui serait logique et respecterait les formes normales
Pour afficher un mois par exemple Janvier je ne peux pas non plus utiliser SELECT DAY(time)
Rien compris à cette assertion
par contre dans ton exemple je ne comprend pas bien le AS jour et GROUP BY jour ?
MySQL autorise l'utilisation des noms d'alias de colonnes dans les clauses GROUP BY et HAVING, ce n'est pas standard (SQL) donc, effectivement, plutôt à éviter.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci beaucoup pour tes explications, grace a Group By j'ai pus obtenir le resultat voulu !
Hors ligne
Pages :: 1