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

Requêtes et SQL. Discussion :

Jointure entre plusieurs requetes INSERT INTO


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut Jointure entre plusieurs requetes INSERT INTO
    Bonjour Le forum,
    Je desire faire la jointure entre une dizaine de requetes INSERT INTO.
    cela est il possible ?
    Si oui, pouvez vous me communiquer la syntaxe.
    Merci pour l'aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO T_FINALE_EXCEL ( EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers] )
    SELECT R021_Nbre_dossiers_AG_Centralisée.EXERCICE, R021_Nbre_dossiers_AG_Centralisée.MOIS, R021_Nbre_dossiers_AG_Centralisée.Code_mois, R021_Nbre_dossiers_AG_Centralisée.Nom_Rubrique, R021_Nbre_dossiers_AG_Centralisée.Nom_Sous_Rubrique, R021_Nbre_dossiers_AG_Centralisée.[Nombre de dossiers]
    FROM R021_Nbre_dossiers_AG_Centralisée;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO T_FINALE_EXCEL ( EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers] )
    SELECT R0210_Nbre_dossiers_AG_Spontanée.EXERCICE, R0210_Nbre_dossiers_AG_Spontanée.MOIS, R0210_Nbre_dossiers_AG_Spontanée.Code_mois, R0210_Nbre_dossiers_AG_Spontanée.Nom_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.Nom_Sous_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.[Nombre de dossiers]
    FROM R0210_Nbre_dossiers_AG_Spontanée;

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    Salut,
    il suffit de faire un UNION ALL sur tes select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO (...)
      SELECT ... FROM TABLE1
      UNION ALL SELECT ... FROM TABLE2
      UNION ALL SELECT ... FROM TABLE3
    Il faut juste faire attention a mettre le meme nombre de colonnes dans tes select ou mettre des NULL pour compenser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO (A,B,C)
      SELECT A,B,C FROM TABLE1
      UNION ALL SELECT A,NULL,C FROM TABLE2
      UNION ALL SELECT NULL,B,C FROM TABLE3
    ---
    Farid

  3. #3
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Merci Farid 92,
    Ce sont le resultats de requetes "ajout" que je veux ajouter à la meme table "T_FINALE_EXCEL"
    La syntaxe est elle la meme ?
    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    Si j'ai bien compris ton exemple tu veux rajouter le contenu de N selection dans une table.
    Si je reprend ton exmple ca donnerai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    INSERT INTO T_FINALE_EXCEL ( EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers] )
       SELECT R021_Nbre_dossiers_AG_Centralisée.EXERCICE, R021_Nbre_dossiers_AG_Centralisée.MOIS, R021_Nbre_dossiers_AG_Centralisée.Code_mois, R021_Nbre_dossiers_AG_Centralisée.Nom_Rubrique, R021_Nbre_dossiers_AG_Centralisée.Nom_Sous_Rubrique, R021_Nbre_dossiers_AG_Centralisée.[Nombre de dossiers]
       FROM R021_Nbre_dossiers_AG_Centralisée
       UNION ALL
       SELECT R0210_Nbre_dossiers_AG_Spontanée.EXERCICE, R0210_Nbre_dossiers_AG_Spontanée.MOIS, R0210_Nbre_dossiers_AG_Spontanée.Code_mois, R0210_Nbre_dossiers_AG_Spontanée.Nom_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.Nom_Sous_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.[Nombre de dossiers]
       FROM R0210_Nbre_dossiers_AG_Spontanée;
    Si tu veux rajouter en plus le resultat d'une troisieme table ils suffit de retirer le ";" a la fin et de rajouter un autre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       UNION ALL
       SELECT ...
       FROM ...

    Les mots cles "UNION" et "UNION ALL" permettent de concatener les resultats de plusieurs selections.

    PS: en retirant le ALL on a le resultat de la concatenation sans doublons.

    ---
    Farid.

  5. #5
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    J'ai le message d'erreur suivant : "erreur de syntaxe dans la clause from"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO T_FINALE_EXCEL ( EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers] )
     
    SELECT R021_Nbre_dossiers_AG_Centralisée.EXERCICE, R021_Nbre_dossiers_AG_Centralisée.MOIS, R021_Nbre_dossiers_AG_Centralisée.Code_mois, R021_Nbre_dossiers_AG_Centralisée.Nom_Rubrique, R021_Nbre_dossiers_AG_Centralisée.Nom_Sous_Rubrique, R021_Nbre_dossiers_AG_Centralisée.[Nombre de dossiers]
    FROM R021_Nbre_dossiers_AG_Centralisée
    UNION ALL SELECT R0210_Nbre_dossiers_AG_Spontanée.EXERCICE, R0210_Nbre_dossiers_AG_Spontanée.MOIS, R0210_Nbre_dossiers_AG_Spontanée.Code_mois, R0210_Nbre_dossiers_AG_Spontanée.Nom_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.Nom_Sous_Rubrique, R0210_Nbre_dossiers_AG_Spontanée.[Nombre de dossiers]
    FROM R0210_Nbre_dossiers_AG_Spontanée;

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    hum...
    Apriori le union est accepter sous access: http://www.blueclaw-db.com/accessque...bo_box_all.htm

    Essayes sans le "ALL" pour voir ?

    ---
    Farid

  7. #7
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Toujours "Erreur de syntaxe dans la clause FROM"

    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
    INSERT INTO T_FINALE_EXCEL ( EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers] )
     
    SELECT R021_Nbre_dossiers_AG_Centralisée.EXERCICE, 
    R021_Nbre_dossiers_AG_Centralisée.MOIS, 
    R021_Nbre_dossiers_AG_Centralisée.Code_mois, 
    R021_Nbre_dossiers_AG_Centralisée.Nom_Rubrique, 
    R021_Nbre_dossiers_AG_Centralisée.Nom_Sous_Rubrique, 
    R021_Nbre_dossiers_AG_Centralisée.[Nombre de dossiers]
    FROM R021_Nbre_dossiers_AG_Centralisée
     
    UNION
     
    SELECT R0210_Nbre_dossiers_AG_Spontanée.EXERCICE, 
    R0210_Nbre_dossiers_AG_Spontanée.MOIS, 
    R0210_Nbre_dossiers_AG_Spontanée.Code_mois, 
    R0210_Nbre_dossiers_AG_Spontanée.Nom_Rubrique, 
    R0210_Nbre_dossiers_AG_Spontanée.Nom_Sous_Rubrique, 
    R0210_Nbre_dossiers_AG_Spontanée.[Nombre de dossiers]
    FROM R0210_Nbre_dossiers_AG_Spontanée;

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    tes requetes de selections marche de maniere independantes ?

    ---
    Farid

  9. #9
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    oui, les requetes ajout sont independantes

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    bon apriori sous access ils semblent que le INSERT INTO ... SELECT ...UNION ...
    ne marche pas tres bien
    http://forums.devshed.com/ms-sql-dev...to-184183.html
    http://www.access-programmers.co.uk/...p/t-70104.html

    Ce qui est un peu etonnant.
    Dans les discussions ci-dessus, ils passent par des "selections sauvegardees" ( je suppose des vues dans le language d'access ?) pour y mettre la selection avec les unions.
    Et pour l'insert, ils font une selection directe sur cette "vue".

    J'espere que ca t'aidera ?

    ---
    Farid.

  11. #11
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Je te remercie et bon Apres-midi;
    Cordialement

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour

    J'ai pas access sous la main pour tester mais je me demande est ce que ce problème est lié à Access?
    Déjà de par la nature de l'erreur
    "Erreur de syntaxe dans la clause FROM"
    on peut penser être devant un problème de syntaxe.

    De plus la syntaxe de insert into pour inserer en même temps plusieurs valeurs par une seule instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO nomtable (Col1, Col2,... Coln) values(val1, val2,... valn), (val11, val21,... valn1), ...(valn1, valn2,... valnn)
    Donc si on avait fermer les yeux, on aurait fait comme ca
    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
    INSERT INTO T_FINALE_EXCEL (EXERCICE, MOIS, Code_mois, Nom_Rubrique, Nom_Sous_Rubrique, [Nombre de dossiers])
    '1ere jeux de valeurs
    SELECT R021_Nbre_dossiers_AG_Centralisée.EXERCICE, 
    R021_Nbre_dossiers_AG_Centralisée.MOIS, 
    R021_Nbre_dossiers_AG_Centralisée.Code_mois, 
    R021_Nbre_dossiers_AG_Centralisée.Nom_Rubrique, 
    R021_Nbre_dossiers_AG_Centralisée.Nom_Sous_Rubrique, 
    R021_Nbre_dossiers_AG_Centralisée.[Nombre de dossiers]
    FROM R021_Nbre_dossiers_AG_Centralisée
     
    ,
    '2em jeux de valeurs
     
    SELECT R0210_Nbre_dossiers_AG_Spontanée.EXERCICE, 
    R0210_Nbre_dossiers_AG_Spontanée.MOIS, 
    R0210_Nbre_dossiers_AG_Spontanée.Code_mois, 
    R0210_Nbre_dossiers_AG_Spontanée.Nom_Rubrique, 
    R0210_Nbre_dossiers_AG_Spontanée.Nom_Sous_Rubrique, 
    R0210_Nbre_dossiers_AG_Spontanée.[Nombre de dossiers]
    FROM R0210_Nbre_dossiers_AG_Spontanée;
    ce qui ne marchera probablement pas.

    La question avant l'utilisation de UNION devrait être de savoir la priorité entre INSERT INTO, SELECT et UNION. Et ca devant même tous les autres langages.
    Est ce que c'est la requête UNION qui est exécutée avant ou pas?
    Amicalement

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    La jointure UNION est tout a fait legale et tout ce qu'il y a de plus classique dans le language SQL et prend precedence sur l'insert:
    Voici un example pour le demontrer:
    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
     
    CREATE TABLE TSRC1 ("ID" NUMBER(10,0),"VAL" NUMBER(10,0));
    INSERT INTO TSRC1 (ID,VAL) VALUES(1 ,10);
    INSERT INTO TSRC1 (ID,VAL) VALUES(2 ,20);
    INSERT INTO TSRC1 (ID,VAL) VALUES(3, 30);
     
    CREATE TABLE TSRC2 ("ID" NUMBER(10,0),"VAL" NUMBER(10,0));
    INSERT INTO TSRC2 (ID,VAL) VALUES(4 ,40);
    INSERT INTO TSRC2 (ID,VAL) VALUES(5 ,50);
    INSERT INTO TSRC2 (ID,VAL) VALUES(6, 60);
     
     
    CREATE TABLE TDEST ("ID" NUMBER(10,0),"VAL" NUMBER(10,0));
    INSERT INTO TDEST(ID,VAL)
      SELECT ID,VAL FROM TSRC1
      UNION ALL
      SELECT ID,VAL FROM TSRC2;
     
    SELECT * FROM TDEST;
    Resultat:
    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
     
    CREATE TABLE succeeded.
    1 rows inserted
    1 rows inserted
    1 rows inserted
    CREATE TABLE succeeded.
    1 rows inserted
    1 rows inserted
    1 rows inserted
    CREATE TABLE succeeded.
    6 rows inserted
    ID                     VAL                    
    ---------------------- ---------------------- 
    1                      10                     
    2                      20                     
    3                      30                     
    4                      40                     
    5                      50                     
    6                      60                     
     
    6 rows selected
    ---
    Farid

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Ok. Reste à tester sous access.
    Amicalement

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    ca ne marche pas sous access (voir les references de discussion indique plus haut dans un de mes message).
    Le seul moyen est de passer par des requetes sauvées.
    Le fichier joint illustre la maniere de le faire dans Access

    les joies d'access.....

    ---
    Farid
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip db1.zip (10,1 Ko, 107 affichages)

  16. #16
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2006
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2006
    Messages : 239
    Points : 105
    Points
    105
    Par défaut
    Merci Farid_92,

    Je viens de terminer cette 1ere phase et le résultat est bon;
    Merci encore et bon dimanche.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    De rien.
    Bonne continuation a toi.
    ---
    Farid

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par Farid_92 Voir le message
    ca ne marche pas sous access
    Si si ca marche sous access
    Le seul moyen est de passer par des requetes sauvées.
    Pas nécessairement. On peut faire comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO TDEST(ID,VAL)
      SELECT ID,VAL FROM (SELECT ID,VAL FROM TSRC1
      UNION SELECT ID,VAL FROM TSRC2);
    Amicalement

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Points : 344
    Points
    344
    Par défaut
    sacrement tordu cet access
    Autant pour moi et merci pour l'info.

    ---
    Farid

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

Discussions similaires

  1. Différence entre méthode ADDNEW et requete INSERT INTO
    Par amelyfred dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/03/2015, 07h43
  2. [transaction]effectuer plusieurs requetes insert into
    Par jano_dave dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/04/2009, 23h10
  3. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17
  4. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32
  5. jointure entre deux requete
    Par Youssef dans le forum Langage SQL
    Réponses: 21
    Dernier message: 15/01/2004, 15h13

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