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

Access Discussion :

fusionner 3 tables


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut fusionner 3 tables
    bonsoir,

    je débute et g un peu honte de ma question
    mais bon, ca se tente...
    Voila, je voudrais savoir comment il serait possible de mettre bout a bout + sieurs table (3 en l occurence)

    OK pour faire 2 requetes d ajout successives mais y a pas moyen de faire ca en une fois ??

    Dans l ideal je prefererait eviter d utiliser une requete d ajout car g besoin de chacune de ces 3 tables + de la 4eme (réunion des 3) séparément car elles sont engagées dans des requetes.

    Comment faire ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Avec un Union Query.
    Mais il faut que les données des tables soient du même type.
    L'union ne se fait que via l'éditeur SQL et pas via le QBE.
    Si tu cherche dans l'aide, tu devrais trouver ton bonheur.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir,

    Qu"entends-tu par 'mettre bout à bout'? Elles sont faites comment tes tables?

    A+

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut fusionner 3 tables
    Bonsoir,

    Il y a un debut de réponse sur la FAQ intitulée "Comment Fusionner 2 tables[...]" http://access.developpez.com/faq/?page=Tables#fusion

    @+Zeste
    Cherche activement un emploi
    CarpeDiem,CarpeNoctem
    May The Force Be With Us

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Ok,

    Mes 3 tables ont la meme structures et les champs portent exactement le meme nom PGZ.

    Union Query, SQL, QBE !
    de quoi faire flipper un débutant
    La nuit va etre longue, mais bon, faut bien s y mettre.

    Y a pas genre une vieille fonction de derriere les fagots ?

    En attendant je vais voir cette histoire de SQL...
    Thx.

  6. #6
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Salut,

    Un petit conseil:Inspire toi de la base les "Comptoirs".Il y a dedans une requête dite "Union"se prénommant "Clients et fournisseurs par ville"

    Ainsi tu comprendras mieux ces termes.

    Mais il faut que les données des tables soient du même type.
    L'union ne se fait que via l'éditeur SQL et pas via le QBE.
    Si tu n'es pas en possession de celle-ci alors tu pourras la récupérer,ici

    Bon courage.

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    ok ma fusion marche
    pour fusionner en SQL 2 tables qui ont la meme structure

    SELECT *
    FROM [clients anciens]
    UNION SELECT *
    FROM [clients nouveaux]


    mais je veux créer une table qui soit le résultante de cette fusion Alors

    CREATE TABLE Clients_total (n°clients NUMBER, nom VARCHAR(30), ville VARCHAR(30), CP NUMBER))
    AS SELECT *
    FROM [clients anciens]
    UNION SELECT *
    FROM [clients nouveaux]


    et tout ce que je gagne c est
    error syntaxe CREATE TABLE
    what s wrong ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut fusionner 3 tables
    Bonjour,

    Chez moi la commande plante sur le AS.
    Quand je simplifie le code, j'ai le message qu'une requete action ne peux pas etre une source.

    A part cela, pourquoi ne pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [TA_REQUETE_UNION].* INTO A
    FROM [TA_TABLECIBLE];
    @+Zeste
    CarpeDiem,CarpeNoctem
    Cherche un emploi Assistant chef projet (SI/Marketing/gestion) en IDF.

  9. #9
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Pourquoi ne pas faire à condition que manouvelletable est déjà crée)
    Insert into manouvelletable (monchamp1)
    select mochamp1 from matable1
    union
    select monchamp1 from matable2

    A+

  10. #10
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Avec ce que j'ai compris de ton pb, je dirais que tu dois faire en 2 temps:
    1. Créer la nouvelle table
    2. Remplir cette nouvelle table.

    Ces deux opérations peuvent se faire en SQL ( 1 = Create table ... définir les champs; 2= InsertInto ...et UNION) ou en DAO.

    Maintenant on peut aussi dire que si tu gardes les 3 premières tables, pourquoi faire la quatrième? Quand tu as besoin de cette table, tu peux utiliser une requête UNION des 3 autres...

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    salut

    ok parlons syntax,
    rapL du pb :
    creer une table L_3 a partir de la fusion de deux tables existantes L_1 et L_2
    le tout en SQL

    la manoeuvre pourrait se decomposer ainsi
    1-Fusion des 2 tables L_1 et L_2
    2-Creation de la table L_3 (ayant les memes caracteristiques que L_1 et L_2
    3-insertion de la requete fusion L_1 et L_2 ds la nouvelle table L_3

    1-
    SELECT * FROM [L_1] UNION SELECT * FROM [L_2];

    2-
    CREATE TABLE L-3 (Numero NUMBER; Nom VARCHAR(30))

    3- (Sachant que L_1L_2 est le nom de la requete de fusion)
    INSERT INTO [L-3] SELECT * FROM [L_1L_2]

    Mais la, je me tappe la realisation de 3 requetes differentes
    C est pas possible d ecrire tout ca dans une seule requete SQL ??
    error syntax qd j essaye !!

  12. #12
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour Huub,

    Comme t'as dit pgz :
    1. Créer la nouvelle table
    2. Remplir cette nouvelle table.

    ce sont deux deux instructions SQL qui doivent étre exécuter une par une et non emsemble.
    1. Create Table L-3 ...
    2. Insert into L-3 (Numero,Nom)
    select Numero,Nom from l_1
    union
    select Numero,Nom from l_2

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 59
    Points
    59
    Par défaut : fusionner 3 tables Modifier le message
    Bonjour,
    Pardon pour l'erreur de [TableCible] dans mon précédent post.
    Je n'ai pas de sollution SQL en 1 instruction.
    Je crois que cela ne peux pas se faire sur l'instruction UNION.

    Voila une sollution en deux temps pour fusionner 3 tables et créer la table fusion Table4 sur avec la requete UNION comme source de création de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Set Dbs = CurrentDb
    Set Qdf1SqL1 = Dbs.CreateQueryDef("Requête1")
    Qdf1SqL1.SQL = "SELECT Champ1, Champ2 From Table1 UNION SELECT Champ1, Champ2 FROM Table2 UNION SELECT Champ1, Champ2 FROM Table3;"
    DoCmd.RunSQL "SELECT Requête1.* INTO Table4 FROM Requête1;"
    @+ zeste.
    cherche emploi assistant Chef projet SI MKT Gestion en IDF

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT * INTO matable3
    FROM (SELECT *
    FROM matable
    UNION ALL SELECT *
    FROM matable1
    UNION ALL SELECT *
    FROM matable2
    );
    pour création ; et pour ajout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO matable3
    SELECT *
    FROM (SELECT *
    FROM matable
    UNION ALL SELECT *
    FROM matable1
    UNION ALL SELECT *
    FROM matable2);
    ps si on supprime les all on supprime les doublons
    Elle est pas belle la vie ?

  15. #15
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Points : 20
    Points
    20
    Par défaut


    Merci les gars!
    C est vraiment sympas d avoir pris le temps pour vos réponses

    Voici la solution finale si jamais un autre débutant veut, en une seule requete
    - fusionner trois (ou plus...) tables de structures identiques
    - tout en creant la table résultante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * INTO Table_Totale
    FROM (SELECT * FROM [Table_1] UNION ALL SELECT * FROM [Table_2] UNION ALL SELECT * FROM [Table_3]);
    Je sais que vous avez tous d autres chats à fouetté
    et des bien plus poilus...
    alors thx again.

  16. #16
    Candidat au Club
    Homme Profil pro
    Musicien
    Inscrit en
    Juillet 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Musicien

    Informations forums :
    Inscription : Juillet 2024
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour. Je vais essayer de dépoussiérer ce vieux sujet. Avec un peu de chance quelqu'un m'aidera.
    J'ai en effet utilisé le code offert par le créateur du sujet pour réunir dans une seule nouvelle table des requetes à la structure identique et qui prennent toutes leurs sources dans 2 tables de la base (films et staff)

    Ainsi le code adapté est le suivant (essai avec 3 requetes. Le s a la seconde n'est pas une erreur) :
    J'ai, pour l'essai, laissé le nom Table_totale à la table qui doit être créée.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * INTO Table_Totale
    FROM (SELECT * FROM [Acteur1_Req] UNION ALL SELECT * FROM [Acteurs2_Req] UNION ALL SELECT * FROM [Acteur3_Req] );


    Mais ça ne fonctionne pas. Le message est : Type de données incompatibles dans l'expression du critére.

    Ai je fait une erreur dans le code ?
    Si ca fonctionne avec des tables ca devrait le faire avec des requetes, non ?

    Pour anticiper avec l'etape suivante, ce qui est bizarre, c'est que, tout à l'heure ça a fonctionné un peu plus loin.
    Access m'avait d'abords averti que les données d'une table allait etre modifiees. Malheureusement, le message suivant concernait le manque de clés dans la recherche je crois
    Evidemment la nouvelle table attendue n'existe pas.

  17. #17
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 698
    Points : 57 257
    Points
    57 257
    Billets dans le blog
    41
    Par défaut
    Bonjour,

    il vaut mieux éviter les SELECT * et nommer les champs, par exemple :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT nom, prenom INTO Table_Totale
    FROM (
        SELECT nom1 as nom, prenom1 as prenom FROM [Acteur1_Req]
        UNION ALL 
        SELECT nom2, prenom2 FROM [Acteurs2_Req]
        UNION ALL
        SELECT nom3, prenom3 FROM [Acteur3_Req] );

  18. #18
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2017
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 94
    Points : 20
    Points
    20
    Par défaut Bonsoir et merci de ta réponse.
    Donc plutôt que le * , qui rassemble tous les champs, tu préconises de lister les champs ?


    Dieu merci seuls 6 ou 7 m'intéressent et j'imagine que, vu que toutes les requêtes ont les mêmes, je vais m'en sortir avec le copie collé.
    J'essaie ça demain

    PS désolé j'ai 2 comptes. Par inadvertance tel et ordi n'ont pas le même. En fait je me suis inscris sans savoir que javais déjà un compte.

  19. #19
    Candidat au Club
    Homme Profil pro
    Musicien
    Inscrit en
    Juillet 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Musicien

    Informations forums :
    Inscription : Juillet 2024
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Clé de recherche non trouvée dans aucun champs
    Rebonsoir

    La requete Union me dit : "clé de recherche introuvable dans aucun enregistrement". Ca signifi quoi ?
    Je rappelle qu'il s'agit de rèunir plusieurs requetes dans une nouvelle table grace au code suivant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * INTO Table_Totale
    FROM (SELECT * FROM [Acteur1_Req] UNION ALL SELECT * FROM [Acteurs2_Req] UNION ALL SELECT * FROM [Acteur3_Req])  AS [%$##@_Alias];

    A noter que le s à acteurs3 est normal et que la fin AS [%$##@_Alias] a été rajoutée par Access (2007)

    Merci de m'indiquer comment je peux regler cette histoire de clé

  20. #20
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 698
    Points : 57 257
    Points
    57 257
    Billets dans le blog
    41
    Par défaut
    Avec SELECT *, Access essaie de combiner tous les champs, mais es-tu sûr qu'il y a le même nombre de champs dans chaque table avec des noms identiques et que les champs ont été construits dans le même ordre ?

    D'où l'intérêt de citer les champs nommément comme dit dans mon précédent message.
    Essaie en rajoutant les champs un par un, tu as peut-être aussi une erreur sur les types de données (un champ de type Texte que tu essaies de fusionner avec un champ de type Entier par exemple).

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. fusionner 2 tables
    Par sawati dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/07/2006, 15h55
  2. fusionner 2 tables de structure différente
    Par Rcanada dans le forum Access
    Réponses: 9
    Dernier message: 21/04/2006, 09h54
  3. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  4. Fusionner 2 tables Access
    Par zangel dans le forum Access
    Réponses: 7
    Dernier message: 02/11/2005, 08h33
  5. fusionner 2 tables dont les champs sont identiques mais.....
    Par NoobX dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/10/2005, 16h12

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