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 :

Problème SQL ACCESS


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Médecin de santé publique
    Inscrit en
    Juillet 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Médecin de santé publique
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2023
    Messages : 5
    Par défaut Problème SQL ACCESS
    Bonjour à tous,
    J'ai un problème sur une requête en SQL version ACCESS que j'écris dans un module.
    En fait pour faire simple, j'ai 4 tables avec 3 colonnes : FINESS (texte), ETABLISSEMENT (texte), PONDERATION (numérique).
    Les tables s'appellent HC_ADULTE, HC_ENFANT, HC_JEUNE_ADULTE et HC_GERIATRIE.
    Chacune des tables ne comportent pas forcément les mêmes noms d'établissement, donc la jointure entre toutes les tables est impossible.
    Par exemple, il peut y avoir un même établissement en HC_ADULTE et HC_GERIATRIE mais pas dans les 2 autres.
    J'ai une table finale que je cherche à remplir : PONDERATION_TOTALE avec comme colonne FINESS, PONDERATION_HC, PONDERATION_HDJ (que je complèterai de la même manière que HC) et PONDERATION_TOTALE (même nom que la table d'ailleurs, ca peut changer).

    En fait je cherche à sommer les pondérations d'un établissement présent dans une ou plusieurs tables et remplir les colonnes FINESS (qui est le numéro d'identité de l'établissement), ETABLISSEMENT et PONDERATION_HC qui est la somme des pondération des autres tables par établissement.

    Voilà mon code (CHATGPT ne sait pas me résoudre mon problème) :

    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
    Option Explicit
     
    Sub Ajout_PONDERATION_TOTALE()
     
    DoCmd.SetWarnings False
     
        DoCmd.RunSQL "DELETE * FROM PONDERATION_TOTALE"
     
    'Import des pondérations HC, HDJ et total par établissement
     
        DoCmd.RunSQL "INSERT INTO PONDERATION_TOTALE (FINESS, ETABLISSEMENT, PONDERATION_HC)"
                     "SELECT FINESS, ETABLISSEMENT, SUM([PONDERATION]) AS PONDERATION_HC"
                     FROM (
                        SELECT FINESS, ETABLISSEMENT, PONDERATION FROM HC_ADULTE
                        UNION ALL
                        SELECT FINESS, ETABLISSEMENT, PONDERATION FROM HC_ENFANT
                        UNION ALL
                        SELECT FINESS, ETABLISSEMENT, PONDERATION FROM HC_JEUNE_ADULTE
                        UNION ALL
                        SELECT FINESS, ETABLISSEMENT, PONDERATION FROM HC_GERIATRIE)
                    GROUP BY ETABLISSEMENT
     
     
    End Sub

    Tout est en rouge sauf la première ligne....car en erreur. Merci de votre aide !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Ah le minou aérophagique ne peut vous aider ??? Curieux ....

    En fait le code que vous avez fait (ou copié de CHAT j'ai pété) n'existe pas dans la syntaxe SQL... Vous ne pouvez insérer que dans une seule table à la fois. Pas dans plusieurs. D'autre part votre modèle de données est incorrect. Vous ne devriez avoir qu'une seule table avec ces données communes le reste étant en héritage...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Médecin de santé publique
    Inscrit en
    Juillet 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Médecin de santé publique
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2023
    Messages : 5
    Par défaut
    En fait je souhaite bien insérer dans une seule table. Juste que les données de la table à insérer doit être la somme des pondérations des différentes tables pour un même établissement.
    Oui j'ai utilisé le chat avec ses problèmes gastro pour me dire si mon code était bon (c'est bien le miens) et me dit c'est ok à chaque fois.....

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    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 636
    Billets dans le blog
    10
    Par défaut
    le GROUP BY est incohérent avec le SELECT et il faut utiliser des alias

    Ceci devrait fonctionner :

    Code SQL : 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
    INSERT INTO PONDERATION_TOTALE 
        (FINESS, ETABLISSEMENT, PONDERATION_HC)
    SELECT XX.FINS, XX.ETAB, SUM(XX.POND)
    FROM (SELECT FINESS as FINS, ETABLISSEMENT as ETAB, PONDERATION as POND
          FROM HC_ADULTE
          UNION ALL
          SELECT FINESS as FINS, ETABLISSEMENT as ETAB, PONDERATION as POND
          FROM HC_ENFANT
          UNION ALL
          SELECT FINESS as FINS, ETABLISSEMENT as ETAB, PONDERATION as POND
          FROM HC_JEUNE_ADULTE
          UNION ALL
          SELECT FINESS as FINS, ETABLISSEMENT as ETAB, PONDERATION as POND
          FROM HC_GERIATRIE
         ) XX
    GROUP BY XX.FINS
           , XX.ETAB

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

Discussions similaires

  1. [Access] Problème SQL SELECT LIMIT
    Par oxygen240 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 09/09/2010, 15h11
  2. Problème sql vba access
    Par aaliyan dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 30/04/2007, 14h02
  3. [my sql / ACCESS] : problème de doublons
    Par camzo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/04/2007, 08h57
  4. [SQL Access] Problème avec Sum()
    Par badgam piero dans le forum Access
    Réponses: 5
    Dernier message: 12/12/2005, 16h00

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