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

SQL Procédural MySQL Discussion :

problème dans mon procédure


Sujet :

SQL Procédural MySQL

  1. #1
    Membre très actif
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Par défaut problème dans mon procédure
    bonjour j'ai cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Mysql>DELIMITER $$
    DROP PROCEDURE IF EXISTS updateCache$$
        CREATE PROCEDURE updateCache()
        SQL SECURITY DEFINER
    COMMENT 'Updates cache totals every night'
        BEGIN
        REPLACE INTO cache (name,value,updatetime) VALUES ('msg_sum', (SELECT SUM(counter) FROM logs),NOW());
        REPLACE INTO cache (name,value,updatetime) VALUES (CONCAT('chart_mpd_',DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d_%a')), (SELECT SUM(counter) FROM logs WHERE lo BETWEEN DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) AND DATE_SUB(CONCAT(CURDATE(), ' 23:59:59'), INTERVAL  1 DAY)),NOW());
    END$$
    delimiter ;
    le problème que la requête 1 sql fonctionne mai je suis entrain de faire la rafraichissement des donnés dans la requête 2 du tables cache à chaque minuit toujours j'ai la valeur 0

    prière de m'aidez
    merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Il faut faire des requêtes de la forme insert into select et non values :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    REPLACE INTO cache (name,value,updatetime) 
     select 'msg_sum', SUM(counter), NOW()
       FROM logs;
     
    REPLACE INTO cache (name,value,updatetime) 
     select CONCAT('chart_mpd_',DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d_%a'), SUM(counter), NOW()
       FROM logs 
      WHERE lo BETWEEN DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) AND DATE_SUB(CONCAT(CURDATE(), ' 23:59:59'), INTERVAL  1 DAY);

  3. #3
    Membre très actif
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Il faut faire des requêtes de la forme insert into select et non values :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    REPLACE INTO cache (name,value,updatetime) 
     select 'msg_sum', SUM(counter), NOW()
       FROM logs;
     
    REPLACE INTO cache (name,value,updatetime) 
     select CONCAT('chart_mpd_',DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d_%a'), SUM(counter), NOW()
       FROM logs 
      WHERE lo BETWEEN DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) AND DATE_SUB(CONCAT(CURDATE(), ' 23:59:59'), INTERVAL  1 DAY);

    merci pour votre réponse
    mai j'ai cette erreur pour la deuxième requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM logs
      WHERE lo BETWEEN DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL ' at line 3

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Il manque une parenthèse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT('chart_mpd_',DATE_FORMAT(NOW() - INTERVAL 1 DAY, '%Y-%m-%d_%a'))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème dans mon script
    Par kawther dans le forum Langage
    Réponses: 1
    Dernier message: 21/03/2007, 16h40
  2. problème dans une procédure
    Par winnyzeboss1 dans le forum SQL
    Réponses: 2
    Dernier message: 08/11/2006, 11h00
  3. Réponses: 13
    Dernier message: 17/10/2006, 15h35
  4. Problème dans mon JSP
    Par johnpelu dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 02/06/2006, 14h45
  5. [MySQL] Problème dans mon script de pagination
    Par speedylol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2005, 19h37

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