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

Langage SQL Discussion :

Erreur de code


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Points : 54
    Points
    54
    Par défaut Erreur de code
    Bonjour
    Je souhaite extraire les dernière 48h de mes enregistrements.
    Pour cela, j'utilise le code suivant :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $query_temperature48 = $bd_meteo->query("SELECT DateHeure, Temp_E FROM data WHERE DateHeure >= DATE_ADD(MAX('DateHeure'), INTERVAL -2 DAY) ORDER BY DateHeure");
     
    while ($temp48 = $query_temperature48->fetch())
    {
    $data_temp48[] = '['.(strtotime($temp48['DateHeure'])*1000).', '.$temp48['Temp_E'].']';
    }
     
    ?>

    Mes celui-ci me retourne l'erreur suivante :
    Fatal error: Call to a member function fetch() on a non-object in /homepages/19/d486172578/htdocs/site_V3/pages/graphiques6.inc.php on line 6
    .

    Pour chercher d'où vient l'erreur, j'entre le code suivant :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $bd_meteo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    qui me renvoie cela :
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1111 Invalid use of group function' in /homepages/19/d486172578/htdocs/site_V3/pages/graphiques6.inc.php:4 Stack trace: #0 /homepages/19/d486172578/htdocs/site_V3/pages/graphiques6.inc.php(4): PDO->query('SELECT DateHeur...') #1 /homepages/19/d486172578/htdocs/site_V3/index.php(155): include('/homepages/19/d...') #2 {main} thrown in /homepages/19/d486172578/htdocs/site_V3/pages/graphiques6.inc.php on line 4
    Malheureusement, les connaissances sont encore trop limitées et je ne trouve pas...

    Quelqu'un pourrait m'aider?

    Merci
    Stéphane

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Je viens de faire un test :
    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DateHeure >= DATE_ADD(MAX('DateHeure'), INTERVAL -2 DAY)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE YEAR(DateHeure) = 2014 AND MONTH (DateHeure) = 10
    , j'extrais bien les valeurs d'octobre 2014.

    J'en déduis que mon erreur est dans ce code, mais comment trier les dernières 48h?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    il faut utiliser une sous-requête pour définir la valeur du MAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE DateHeure >= DATE_ADD(SELECT MAX(DateHeure) FROM data, INTERVAL -2 DAY)
    A voir si le SGBD accepte ce type de syntaxe.

    a+

    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Non, à mon avis c'est la fonction qui renvoit le jour / heure système que stefane26 ne connaît pas.

    Si c'est du MySQL, on peut utiliser CURRENT_TIMESTAMP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      SELECT DateHeure, Temp_E
        FROM data
       WHERE DateHeure >= CURRENT_TIMESTAMP - INTERVAL 2 DAY
    ORDER BY DateHeure;

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    oui c'est ce qu j'ai pensé au début, sauf qu'avec cette phrase
    Je souhaite extraire les dernière 48h de mes enregistrements.
    son analyse semble plus correct.

    Ex : si la requête est lancé un lundi (et que le WE est vraiment férié), elle ne sort aucun résultat

    olivier
    Merci d'ajouter un sur les tags qui vous ont aidé

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est vrai, cette phrase peut porter à confusion.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Bonsoir et merci pour votre aide
    Malheureusement la requête d'Olivier me renvoie la même erreur.
    Et en effet, les dernières 48h sont WE compris.

    J'ai modifié mon code en créant 2 requêtes et cela marche
    Code php : 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
    <?php
    $query_dateMax = $bd_meteo->query('SELECT MAX(DateHeure) FROM data');
    $dateMax = $query_dateMax->fetch();
    $date_max = $dateMax['MAX(DateHeure)'];
    $date_48h = date('Y-m-d H:i:s', strtotime($date_max)-(2*24*3600));
     
     
     
    $query_donnees48 = $bd_meteo->query("SELECT DateHeure, Temp_E, P_Rosee FROM data WHERE DateHeure >= '$date_48h' ORDER BY DateHeure");
    while ($donnees48 = $query_donnees48->fetch())
    {
    $data_temp48[] = '['.(strtotime($donnees48['DateHeure'])*1000).', '.$donnees48['Temp_E'].']';
     
    $data_P_rosee48[] = '['.(strtotime($donnees48['DateHeure'])*1000).', '.$donnees48['P_Rosee'].']';
    }
    ?>

    Encore merci

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Pensez à mettre le Tag résolu
    Merci d'ajouter un sur les tags qui vous ont aidé

Discussions similaires

  1. Erreur système . Code : 1410 ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/05/2006, 08h59
  2. [Debutant][XSL] Erreur de code programmation
    Par SkyDev dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/03/2006, 22h38
  3. Erreur : ce code n'est pas connu
    Par ruman dans le forum VBA Access
    Réponses: 17
    Dernier message: 13/02/2006, 11h37
  4. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16
  5. Erreur de code
    Par petdelascar dans le forum C
    Réponses: 7
    Dernier message: 12/12/2005, 08h15

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