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

Requêtes MySQL Discussion :

Bug: SUM() renvoie le double du résultat attendu


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut Bug: SUM() renvoie le double du résultat attendu
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select sum(enregistrement) 
    from table ma_table 
    where date_transfert like 'aaaa-mm-jj %';
    cette commande me renvoie toujours le double de la somme attendue (genre 1500 au lieu de 750).

    est-ce que quelqu'un saurait d'où vien le problème? (à part le problème que je suis nul en BDD )

    merci!

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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 ?

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select sum(puissance_AC/1000) 
    from day_ond 
    where adr_ond like '1' 
      and date_transfert like '2011-01-27 %';
    mais je dois expliquer tout depuis le début, tu vas comprendre:

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select sum(puissance_AC/1000) 
    from ond 
    where adr_ond like '1';
    j'obtiens alors : 800.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select sum(puissance_AC/1000) 
    from day_ond 
    where adr_ond like '1' 
      and date_transfert like '2010-01-27 %';
    . j'obtiens maintenant : 1600.

    voilà!

    (je sais pas pour toi, mais moi je trouve ça très bizarre)

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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 ?

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    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

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu lances tes requêtes directement sur le serveur ou via un logiciel ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par K2000 Voir le message
    Bonjour aieeeuuuuu,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select sum(puissance_AC/1000) 
    from day_ond 
    where adr_ond like '1' 
      and date_transfert like '2011-01-27 %';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select sum(puissance_AC/1000) 
    from day_ond 
    where adr_ond like '1' 
      and date_transfert like '2010-01-27 %';

    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 )

  8. #8
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    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?

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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.

  10. #10
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    Salut,

    voici comment j'archive mes données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO day_ond SELECT * from ond");
    c'est un code php que je lance toutes les 24H pour archivage

    voici un exemple concret qui met en évidence le BUG:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(Energie_jour)/1000 from day_ond where date_transfert like '2011-01-% %' group by date_transfert;
    et ceci me renvoi:
    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
    51
    52
    53
    54
     59.058 | 
    |                 59.058 | 
    |                  0.586 | 
    |                  0.586 | 
    |                  19.15 | 
    |                  19.15 | 
    |                 22.647 | 
    |                 22.647 | 
    |                 67.668 | 
    |                 67.668 | 
    |                 20.212 | 
    |                 20.212 | 
    |                 27.781 | 
    |                 27.781 | 
    |                 78.587 | 
    |                 78.587 | 
    |                  3.414 | 
    |                  3.414 | 
    |                 10.619 | 
    |                 10.619 | 
    |                      0 | 
    |                      0 | 
    |                 94.862 | 
    |                 94.862 | 
    |                108.802 | 
    |                108.802 | 
    |                127.295 | 
    |                127.295 | 
    |                121.197 | 
    |                121.197 | 
    |                 75.995 | 
    |                 75.995 | 
    |                  59.93 | 
    |                  59.93 | 
    |                  7.642 | 
    |                  7.642 | 
    |                  2.261 | 
    |                  2.261 | 
    |                  0.054 | 
    |                  0.054 | 
    |                  0.609 | 
    |                  0.609 | 
    |                  0.456 | 
    |                  0.456 | 
    |                  0.494 | 
    |                  0.494 | 
    |                 12.879 | 
    |                 12.879 | 
    |                 79.782 | 
    |                 79.782 | 
    |                 59.134 | 
    |                 59.134 | 
    |                 81.981 | 
    |                 81.981
    Donc le fait que je mette "group by date_transfert" met en évidence le fait que mes données sont mentionnées deux fois (et du coup sommées deux fois), et ceci uniquement lorsque j'utilise la fonction SUM!!! si je fais un simple listing (sans SUM) aucun doublon n'apparait!

    Pour l'instant la seule parade que j'ai trouvé est d'insérer la fonction "distinct" pour enlever les doublons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct sum(Energie_jour)/1000 from day_ond where date_transfert like '2011-01-% %' group by date_transfert;
    et le résultat me donne:
    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
    59.058 | 
    |                  0.586 | 
    |                  19.15 | 
    |                 22.647 | 
    |                 67.668 | 
    |                 20.212 | 
    |                 27.781 | 
    |                 78.587 | 
    |                  3.414 | 
    |                 10.619 | 
    |                      0 | 
    |                 94.862 | 
    |                108.802 | 
    |                127.295 | 
    |                121.197 | 
    |                 75.995 | 
    |                  59.93 | 
    |                  7.642 | 
    |                  2.261 | 
    |                  0.054 | 
    |                  0.609 | 
    |                  0.456 | 
    |                  0.494 | 
    |                 12.879 | 
    |                 79.782 | 
    |                 59.134 | 
    |                 81.981
    là tous les doublons sont supprimés. Alors ça régle mon problème, mais c'est une manière de tricher... je vais continuer à utiliser "distinct" mais mon MySQL déconne quelquepart, mais où?!

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par K2000 Voir le message
    Pour l'instant la seule parade que j'ai trouvé est d'insérer la fonction "distinct" pour enlever les doublons:
    en effet, c'est pas très propre !

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT date_transfert, sum(Energie_jour)/1000 
    FROM day_ond 
    WHERE date_transfert LIKE '2011-01-% %' 
    GROUP BY date_transfert ;

    3/ quel est le format de date_transfert ? (si tu peux même poster la définition des deux tables, ce serait encore mieux !)

  12. #12
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    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 : 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
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    +---------------------+------------------------+
    | date_transfert      | sum(Energie_jour)/1000 |
    +---------------------+------------------------+
    | 2011-01-01 22:00:22 |                 59.058 | 
    | 2011-01-01 23:00:22 |                 59.058 | 
    | 2011-01-02 22:00:25 |                  0.586 | 
    | 2011-01-02 23:00:24 |                  0.586 | 
    | 2011-01-03 22:00:33 |                  19.15 | 
    | 2011-01-03 23:00:25 |                  19.15 | 
    | 2011-01-04 22:00:26 |                 22.647 | 
    | 2011-01-04 23:00:18 |                 22.647 | 
    | 2011-01-05 22:00:22 |                 67.668 | 
    | 2011-01-05 23:00:16 |                 67.668 | 
    | 2011-01-06 22:00:18 |                 20.212 | 
    | 2011-01-06 23:00:17 |                 20.212 | 
    | 2011-01-07 22:00:19 |                 27.781 | 
    | 2011-01-07 23:00:26 |                 27.781 | 
    | 2011-01-08 22:00:23 |                 78.587 | 
    | 2011-01-08 23:00:21 |                 78.587 | 
    | 2011-01-09 22:00:24 |                  3.414 | 
    | 2011-01-09 23:00:23 |                  3.414 | 
    | 2011-01-10 22:00:22 |                 10.619 | 
    | 2011-01-10 23:00:21 |                 10.619 | 
    | 2011-01-11 22:01:49 |                      0 | 
    | 2011-01-11 23:01:48 |                      0 | 
    | 2011-01-14 22:00:19 |                 94.862 | 
    | 2011-01-14 23:00:18 |                 94.862 | 
    | 2011-01-15 22:01:44 |                108.802 | 
    | 2011-01-15 23:01:45 |                108.802 | 
    | 2011-01-16 22:00:21 |                127.295 | 
    | 2011-01-16 23:00:21 |                127.295 | 
    | 2011-01-17 22:01:44 |                121.197 | 
    | 2011-01-17 23:01:45 |                121.197 | 
    | 2011-01-18 22:00:31 |                 75.995 | 
    | 2011-01-18 23:00:28 |                 75.995 | 
    | 2011-01-19 22:00:17 |                  59.93 | 
    | 2011-01-19 23:00:17 |                  59.93 | 
    | 2011-01-20 22:01:41 |                  7.642 | 
    | 2011-01-20 23:01:42 |                  7.642 | 
    | 2011-01-21 22:00:17 |                  2.261 | 
    | 2011-01-21 23:00:18 |                  2.261 | 
    | 2011-01-22 22:00:19 |                  0.054 | 
    | 2011-01-22 23:00:20 |                  0.054 | 
    | 2011-01-23 22:00:33 |                  0.609 | 
    | 2011-01-23 23:00:21 |                  0.609 | 
    | 2011-01-24 22:00:23 |                  0.456 | 
    | 2011-01-24 23:00:22 |                  0.456 | 
    | 2011-01-25 22:00:25 |                  0.494 | 
    | 2011-01-25 23:00:26 |                  0.494 | 
    | 2011-01-26 22:00:26 |                 12.879 | 
    | 2011-01-26 23:00:27 |                 12.879 | 
    | 2011-01-27 22:00:18 |                 79.782 | 
    | 2011-01-27 23:00:18 |                 79.782 | 
    | 2011-01-28 22:00:18 |                 59.134 | 
    | 2011-01-28 23:00:17 |                 59.134 | 
    | 2011-01-29 22:00:19 |                 81.981 | 
    | 2011-01-29 23:00:20 |                 81.981 | 
    +---------------------+------------------------+
    voici la définition de mes tables (ond et day_ond) sont identiques:
    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
     
    +----------------+-------------+------+-----+-------------------+-----------------------------+
    | Field          | Type        | Null | Key | Default           | Extra                       |
    +----------------+-------------+------+-----+-------------------+-----------------------------+
    | date_transfert | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
    | temps          | varchar(10) | YES  |     | NULL              |                             | 
    | intervalle     | int(11)     | YES  |     | NULL              |                             | 
    | adr_ond        | varchar(10) | YES  |     | NULL              |                             | 
    | KPC            | float       | YES  |     | NULL              |                             | 
    | tension_DC     | float       | YES  |     | NULL              |                             | 
    | courant_DC     | float       | YES  |     | NULL              |                             | 
    | puissance_DC   | float       | YES  |     | NULL              |                             | 
    | tension_AC     | float       | YES  |     | NULL              |                             | 
    | courant_AC     | float       | YES  |     | NULL              |                             | 
    | puissance_AC   | float       | YES  |     | NULL              |                             | 
    | T_onduleur     | float       | YES  |     | NULL              |                             | 
    | Energie_jour   | float       | YES  |     | NULL              |                             | 
    +----------------+-------------+------+-----+-------------------+-----------------------------+
    merci pour ton aide!

  13. #13
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  14. #14
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par K2000 Voir le message
    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.
    Citation Envoyé par CinePhil Voir le message
    Tu as deux date_transfert par jour : une à 22h et une à 23h. Ta procédure de transfert ne se lancerait-elle pas deux fois ?
    Il y a quand même quelque chose d'étrange...

    Est-ce que le truncate est effectué par la procédure qui archive ?

  15. #15
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 36
    Par défaut
    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! )

  16. #16
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  17. #17
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    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...

  18. #18
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    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

  19. #19
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    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?

    On voit clairement dans un des messages ci dessous que la mesure pour deux secondes consécutives sont identiques. Normal? my bad.

    le résultat de ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT date_transfert, sum(Energie_jour)/1000, count(energie_jour)
    FROM day_ond 
    WHERE date_transfert LIKE :pattern 
    GROUP BY date_transfert WITH ROLLUP;

  20. #20
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    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 ?

    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 !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. requete SQL incomplète qui ne renvoie pas le résultat attendu
    Par ballantine's dans le forum Langage SQL
    Réponses: 14
    Dernier message: 07/10/2010, 07h23
  2. Réponses: 2
    Dernier message: 11/12/2006, 19h46
  3. Réponses: 5
    Dernier message: 03/11/2006, 13h23
  4. Concaténation ne donne pas le résultat attendu
    Par artotal dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 01h37
  5. Réponses: 5
    Dernier message: 19/11/2004, 19h16

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