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 :

Aide pour une requête d'insertion


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Par défaut Aide pour une requête d'insertion
    Bonjour,

    Je viens solliciter l'aide de ceux qui voudront bien m'aider.

    Voici en résumé :

    Dans une base de données créée avec Access 2007 j'ai une table (DConsoJT) composée des colonnes suivantes:
    DateHeure,WMJ,WSJ,WSolJ qui contiennent les informations issue d'une application de comptage consommations.
    Les données sont enregistrées tous les 1/4 d'heures.
    Ayant changé mon application, j'enregistre maintenant les informations dans une autre table (DatasHeures), mêmes colonnes
    toutes les heures.

    Ce que j'aimerais faire c'est récupérer les informations de la table DConsoJT en calculant la somme de chaque colonne par heure
    et l'insérer dans la nouvelle table DatasHeures.

    La requête que j'utilise :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO DatasHeures (WMJ, WSJ, WSolJ )
    select sum(WMJ), sum(WSJ), sum(WSolJ) from DconsoJT where (DATEHEURE > dhdp) and (DATEHEURE < dhfp)

    dhdp= variable dateheuredebutpériode
    dhfp= variable dateheurefinpériode
    générées par mon appli de requêtes (boucle)
    fonctionne correctement.

    Soit exemple:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO DatasHeures (dateHeure,WMJ, WSJ, WSolJ )
    select sum(WMJ), sum(WSJ), sum(WSolJ) from DconsoJT where (DATEHEURE > #02/01/2024 00:00:01#) and (DATEHEURE < #02/01/2024 01:00:01#)

    Le problème c'est que quand j'essaye de rajouter le champ DateHeure je n'y arrive pas, ce que je voudrais obtenir par rapport à l'exemple ci dessus :
    DateHeure,WMJ,WSJ,WSol soit: 02/01/2024 01:00:01,sum(WMJ), sum(WSJ), sum(WSolJ)
    Le champ DateHeure est = à dhfp.

    Je n'arrive pas à construire correctement cette requête donc si quelqu'un pouvait m'aider ce serait sympa.
    Merci d'avance,
    Guy.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 434
    Par défaut
    Bonjour,
    Dans le seconde requête, le nombre de colonne dans la clause INSERT ne correspond pas à celui de la clause SELECT, donc ça ne peut pas fonctionner.
    Tu dois donc ajouter dans le SELECT la valeur que tu veux affecter à la colonne DateHeure.

    Tatayo.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Par défaut
    Bonsoir Tatayo,
    C'est justement là dessus que porte ma demande :
    Comment dois-je formuler ma requête pour insérer cette donnée, j'ai essayé plusieurs idées après recherches sur la toile
    et je ne parviens pas à une solution qui fonctionne.
    Le plus souvent erreur de syntaxe.
    Merci pour l'aide
    Guy.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par défaut
    Donc il s'agit de cumuler pour la même heure (et donc la même date) des données enregistrées tous les quart d'heure dans une table qui stocke des cumuls horaires.
    C'est assez simple, sous réserve que la table source ait une date sans quoi on va cumuler des valeurs à tort.
    Merci de communiquer le DDL complet de création des tables (script CREATE TABLE) pour qu'on puisse donner une réponse pertinente

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Par défaut To all
    Les tables sont créées directement dans access.
    Elles sont identiques à part le nom.
    Nom : datasheures.jpg
Affichages : 75
Taille : 19,8 Ko

    Il se peut que je ne me sois pas trop bien exprimé, alors pour être plus clair:
    Pour une requête d'insertion, on peut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Insert into table (col1,col2,col3)
             values(Val1,val2,val3)
    ou alors si on prend les données dans une autre table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Insert into table (col1,col2,col3)
              select val1,val2,val3 from autre table where ....
    Dans mon cas et cette requête fonctionne j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO DatasHeures (WMJ, WSJ, WSolJ )
    select sum(WMJ), sum(WSJ), sum(WSolJ) from DconsoJT where (DATEHEURE > #02/01/2024 00:00:01#) and (DATEHEURE < #02/01/2024 01:00:01#)
    En fait je n'ai pas le champ DateHeure qui correspond à ces cumuls et c'est ce que j'aimerais rajouter automatiquement lors de l’exécution de la requête.
    Cette dateheure est une variable qui correspond en fait à la dateheuredefindepériode donc je peux l'insérer dans ma requête mais comment?
    J'ai essayé par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO DatasHeures (DateHeure,WMJ, WSJ, WSolJ )
     Values("02/01/2024 01:00:01",DconsoJT.sum(WMJ) where (DconsoJT.DATEHEURE > #02/01/2024 00:00:01#) and (DconsoJT.DATEHEURE < #02/01/2024 01:00:01#), DconsoJT.sum(WSJ) where (DconsoJT.DATEHEURE > #02/01/2024 00:00:01#) and (DconsoJT.DATEHEURE < #02/01/2024 01:00:01#), DconsoJT.sum(WSolJ) where (DconsoJT.DATEHEURE > #02/01/2024 00:00:01#) and (DconsoJT.DATEHEURE < #02/01/2024 01:00:01#))
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO DatasHeures (DateHeure,WMJ, WSJ, WSolJ )
    Values("02/01/2024 01:00:01",(select sum(WMJ), sum(WSJ), sum(WSolJ) from DconsoJT where (DATEHEURE > #02/01/2024 00:00:01#) and (DATEHEURE < #02/01/2024 01:00:01#))
    Bien entendu je me fais insulter(LOL)
    Si il y a une bonne solution merci pour l'aide.

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 434
    Par défaut
    Bonjour,
    Tu peux très bien ajouter la date dans la clause SELECT:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO DatasHeures (DateHeure,WMJ, WSJ, WSolJ )
    select #02/01/2024 00:00:00#,um(WMJ), sum(WSJ), sum(WSolJ) from DconsoJT where (DATEHEURE > #02/01/2024 00:00:01#) and (DATEHEURE < #02/01/2024 01:00:01#))

    Tatayo

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

Discussions similaires

  1. Aide pour une requête SQL d'insertion
    Par waner442 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/11/2009, 23h24
  2. Aide pour une requete d'insertion
    Par loicremy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/04/2008, 16h50
  3. Aide pour une requete de comparaison de table et d'insertion
    Par Froufou dans le forum SQL Procédural
    Réponses: 23
    Dernier message: 26/02/2008, 12h00
  4. Aide pour une requete ... "COUNT(*)"
    Par mechantebestiole dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/05/2004, 16h27
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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