|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Bonjour,
j'ai une table MySQL contenant des enregistrememnts de floats(environ 10 000 enregistrements) quand je tente de faire la somme de ces 10 000 enregistrement par: Code :
est-ce que quelqu'un saurait d'où vien le problème? (à part le problème que je suis nul en BDD merci! |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Bizarre en effet ! 1/ fais-tu réellement une requete aussi simple que celle que tu as postée (pas de jointure ? ça sent le produit cartésien ! ) 2/ comment fais-tu pour calculer le résultat attendu ? |
|
|
00
|
|
|
#3 | ||||||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Bonjour aieeeuuuuu,
en fait j'ai un peu simplifié la requête, mais d'ans l'esprit c'est ça... mais si tu veux voici la vrai synthaxe exacte que j'utilise: Code :
j'ai deux tables: - ond: qui archive les données du jour courant - day_ond: qui archive les données de tous les jours depuis le 2010-11-01 nous sommes le jour n: quand je fais l'opération de somme sur la table ond Code :
maintenant nous sommes le jour n+1, les données de la table ond sont maintenant archivées dans la tables day_ond: je fais alors: Code :
voilà! (je sais pas pour toi, mais moi je trouve ça très bizarre)
|
||||||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
C'est pour ca que je te demandais comment tu faisais pour vérifier !
Es-tu sur que le problème ne vient pas plutôt de l'opération d'archivage, qui insère deux fois par exemple ? est-ce qu'un count(*) ne te renvoi pas également le double du nombre de lignes ? |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Bonjour,
moi aussi j'ai pensé à ça, mais non.... les archves sont sauvegardées 1 fois pas 2. et le count me renvoie le nombre exact. une autre idée? merci |
|
|
00
|
|
|
#6 |
![]() ![]() |
Tu lances tes requêtes directement sur le serveur ou via un logiciel ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 | |||||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Je reviens dessus, je viens de voir que l'année n'est pas la même dans les deux requêtes... est-ce juste une erreur de copier/coller ? (je suppose, vu que tu dis que les données sont archivées depuis le 2010-11... mais ca vaut le coup de vérifier |
|||||
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Bonjour à tous,
@ CinePhil: Non, je n'utilise pas de logiciel particulier, je suis sur Mysql, et je lance mes requêtes à partir de ma console linux, et j'obtient les mêmes résultats lorsque je lance ces requêtes à partir de scripts php. @aieeeuuuuu : oui oui il s'agis bien d'une erreur de frappe... je voulais dire 2011 d'autres idées? |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
non aucune !
pour pouvoir avancer, à ce stade, il nous faudrait au moins : 1/ La DDL des tables 2/ ta procédure d'archivage 3/ un jeu d'essai éventuellement Et surtout, donne des vrais données, pas des exemples interprétés, car vu le type de problème, je pense que c'est un petit détail... Si tu remet que des exemples pour le principe de fonctionnement, tu va masquer ce petit problème ! En effet, des choses me surprennent dans ce que tu dis : tu dis que ta colonne puissance_AC est de type float, mais dans les exemples que tu donnes, même après division par 1000, tu tombe encore sur des comptes drôlement rond : 800, 1600, ... PS: essaie sans la division par 1000 pour voir si tu as le même résultats. |
|
|
00
|
|
|
#10 | ||||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Salut,
voici comment j'archive mes données: Code :
mysql_query("INSERT INTO day_ond SELECT * from ond"); voici un exemple concret qui met en évidence le BUG: Code :
SELECT sum(Energie_jour)/1000 FROM day_ond WHERE date_transfert LIKE '2011-01-% %' GROUP BY date_transfert; Code :
Pour l'instant la seule parade que j'ai trouvé est d'insérer la fonction "distinct" pour enlever les doublons: Code :
SELECT DISTINCT sum(Energie_jour)/1000 FROM day_ond WHERE date_transfert LIKE '2011-01-% %' GROUP BY date_transfert; Code :
|
||||
|
|
00
|
|
|
#11 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
1/ Quand et comment supprimes-tu les données de la table ond ? 2/ peux-tu nous donner le resulats de cette requete : Code sql :
3/ quel est le format de date_transfert ? (si tu peux même poster la définition des deux tables, ce serait encore mieux !) |
|||
|
|
00
|
|
|
#12 | ||||
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
salut,
voici ce que j'utilise pour supprimer ma table ond: je la supprime tous les jours à 23:30H (pour pouvoir réceptionner les nouvelles données du jour n+1) voici ce que me retourne ta requette: Code :
Code :
|
||||
|
|
00
|
|
|
#13 |
![]() ![]() |
Tu as deux date_transfert par jour : une à 22h et une à 23h. Ta procédure de transfert ne se lancerait-elle pas deux fois ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Citation:
Est-ce que le truncate est effectué par la procédure qui archive ? |
||
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Étudiant Inscription : octobre 2007 Messages : 36 ![]() |
Oui, le TRUNCATE est executé par la procédure qui rachive... tu pense que ça vien de là? parceque je fais un TRUNCATE et un LOAD DATA LOCAL INFILE dans la même procédure? si c'est ça je n'y comprend rien (mais alors là rien à rien!
|
|
|
00
|
|
|
#16 |
![]() ![]() |
On peut voir le code de la procédure ?
Et comment est lancée cette procédure ? Parce que ce que je constate, comme dit dans mon message précédent, c'est qu'il y a une insertion à 22h et une autre à 23h !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#17 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Non, je ne crois rien... c'était juste pour essayer de comprendre...
Et à vrai dire, c'est encore pire qu'avant ! Car si la procédure qui archive est la même que celle qui efface les données dans la table source, alors le fait de la lancer deux fois ne devrait pas poser ce problème... ![]() peux tu nous mettre le code complet de la procédure et aussi, qui la lance, comment, quand... |
|
|
00
|
|
|
#18 | |
|
Membre Expert
![]() frederic frances Inscription : juin 2009 Messages : 1 703 ![]() |
ta requête ne fait peu être pas tout a fait ce que tu crois, as tu essayé explain pour voir comment mysql comprend ta requête
http://dev.mysql.com/doc/refman/5.0/en/explain.html
__________________
BAZAR est un joyeux bordel improvisé ! Tous les mardis. http://www.improetcompagnie.com/publ...ctacles-6.html Citation:
http://www.emacswiki.org/ Attends de voir ce qui vas sortir de: http://www.pushmid.com |
|
|
|
00
|
|
|
#19 | ||
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
Depuis le début, je lis que c'est le petit résultat qui est le résultat juste. Pourquoi ce ne serai pas le grand résultat?
le résultat de ceci? Code :
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
||
|
|
00
|
|
|
#20 | |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Je repose la 2éme question de mon premier post !!! Si ta procédure d'archivage fait un truncate, comment peux-tu comparer les données entre les deux tables ? car avant l'archivage, elles sont dans la table ond_day, et pas dans ond, et après archivage, c'est l'inverse ! |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com