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

Outils MySQL Discussion :

PhpMyAdmin événement avec requête complexe


Sujet :

Outils MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut PhpMyAdmin événement avec requête complexe
    Bonjour à tous

    Je suis en train de créer une base de données et j'aimerai exécuter une requête SQL tous les 12 h. La requête contient en fait 3 requêtes avec des tables temporaires. Lors de son exécution tout fonctionne mais impossible de l’enregistrer en événement.
    MySQL me signale une erreur au niveau de l’enchaînement des requêtes (ligne 19).
    C'est une première pour moi la création d’événement récurrent et je dois voit avoué que je me sens perdu.

    Voici la requête en question :

    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
     
    CREATE TEMPORARY TABLE r1
      SELECT
        CONCAT(MONTH(Heure_deb),'/',DAY(Heure_deb)) as 'Date',
        Heure_deb,
        Operateur.Id_op ,
        Nom_op ,
        Prenom_op,
        Nom_act ,
        TIME(Heure_deb) as heure,
        Commentaire,
        Type
        FROM Operateur, Pointage, Activite
        WHERE Operateur.Id_op = Pointage.Id_op
        AND Activite.Id_act = Pointage.Id_act
        ORDER BY date, Id_op, heure
      ;
     
      Create temporary table r2
      SELECT a.Id_op,
        a.Heure_deb,
        MIN(b.heure_deb) as fin, TIMEDIFF(b.Heure_deb, a.Heure_deb) as Time_Difference,
        ROUND(HOUR(TIMEDIFF(b.Heure_deb, a.Heure_deb)) + MINUTE(TIMEDIFF(b.Heure_deb, a.Heure_deb))/60,2) as Decimal_duree
        FROM Pointage a
        LEFT JOIN Pointage b ON a.Id_op = b.Id_op
        WHERE a.heure_deb < b.heure_deb
        Group by a.Id_op, a.Heure_deb
      ;
     
      Drop TABLE IF EXISTS Resultat;
     
      CREATE TABLE Resultat
      select
        CONCAT(MONTH(r1.Heure_deb),'/',DAY(r1.Heure_deb)) as 'Date',
        TIME(r1.Heure_deb) as heure,
        r1.Id_op ,
        Nom_op ,
        Prenom_op,
        Nom_act ,
        Commentaire,
        Type,
        Time_Difference,
        Decimal_duree,
        r1.Heure_deb as Heure_deb
        from r1
        LEFT JOIN r2 ON r1.Id_op = r2.Id_op
        and r1.heure_deb = r2.heure_deb
        Order by Id_op,  Heure_deb DESC
    En vous remerciant

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 072
    Points : 15 104
    Points
    15 104
    Par défaut
    Salut Hugo57070.

    Et pourquoi ne pas fusionner vos deux tables temporaires dans la même requête ?
    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
    Drop TABLE IF EXISTS Resultat;
     
    CREATE TABLE Resultat
             select  CONCAT(MONTH(r1.Heure_deb),'/',DAY(r1.Heure_deb)) as 'Date',
                     TIME(r1.Heure_deb) as heure,
                     r1.Id_op,
                     Nom_op,
                     Prenom_op,
                     Nom_act,
                     Commentaire,
                     Type,
                     Time_Difference,
                     Decimal_duree,
                     r1.Heure_deb as Heure_deb
     
               FROM  (  SELECT  CONCAT(MONTH(Heure_deb), '/' , DAY(Heure_deb)) as 'Date',
                                Heure_deb,
                                o.Id_op,
                                Nom_op,
                                Prenom_op,
                                Nom_act,
                                TIME(Heure_deb) as heure,
                                Commentaire,
                                Type
     
                          FROM  Operation as o
     
                    INNER JOIN  Pointage  as p
                            On  p.Id_op   = o.Id_op
     
                    INNER JOIN  Activite  as a
                            ON  a.Id_act  = p.Id_act
     
                      ORDER BY  date, o.id_op, heure
                     )  as r1
     
    LEFT OUTER JOIN  (  SELECT  a.Id_op,
                                a.Heure_deb,
                                MIN(b.heure_deb) as fin,
                                TIMEDIFF(b.Heure_deb, a.Heure_deb) as Time_Difference,
                                ROUND(HOUR(TIMEDIFF(b.Heure_deb, a.Heure_deb)) + MINUTE(TIMEDIFF(b.Heure_deb, a.Heure_deb))/60,2) as Decimal_duree
     
                          FROM  Pointage as a
                     LEFT JOIN  Pointage as b
                            ON  b.Id_op = a.Id_op
     
                         WHERE  a.heure_deb < b.heure_deb
                      group by  a.Id_op, a.Heure_deb
                     )  as r2
                 ON  r2.Id_op     = r1.Id_op
                and  r2.heure_deb = r1.heure_deb
     
           Order by  Id_op,  Heure_deb DESC;
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2017
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Je n'y avais pas du tout penser merci beaucoup

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

Discussions similaires

  1. Serveur de test ouvert avec requête "complexe"
    Par DonKnacki dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 02/05/2013, 16h19
  2. Requète Complexe avec GROUP BY et classement descendant
    Par snoups58 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/10/2008, 18h44
  3. Réponses: 4
    Dernier message: 07/11/2007, 15h44
  4. [SQL] Requête complexe avec appel multiple à la même table
    Par Julien Dufour dans le forum Langage SQL
    Réponses: 9
    Dernier message: 14/04/2005, 14h12
  5. 3 tables avec requête complexe
    Par yamino dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/03/2004, 19h50

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