OVH Cloud OVH Cloud

Réunion Tables

5 réponses
Avatar
Leol
Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le champ ID qui
s'autoincrémente.
Quelqun sait il comment faire ?

Merci

5 réponses

Avatar
Pierre CFI [mvp]
bonjour
tu as pas déjà posé le méme question ???

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Leol" <Léo> a écrit dans le message de news:414d90b6$0$283$
Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le champ ID qui
s'autoincrémente.
Quelqun sait il comment faire ?

Merci





Avatar
Yann
Salut Leol,
Tu crées ta table et 3 requêtes d'ajout.

Bye
Yann

-----Message d'origine-----
Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le
champ ID qui

s'autoincrémente.
Quelqun sait il comment faire ?

Merci



.



Avatar
Christophe JEAN
Hello

L'inconvénient est que tu devras ré-exécuter cette série de requête chaque
fois que tu auras besoin d'info mises à jour.

Il existe une solution totalement dynamique : la requête SQL UNION.
Attention tes tables doivent avoir leur champs nommés à l'identique.
Même avec 3 tables elle est possible. Voici sa syntaxe :

SELECT table1.champ1, table1.champ2, etc... From table1
UNION
SELECT table2.champ1, table2.champ2, etc... From table2
UNION
SELECT table3.champ1, table3.champ2, etc... From table3;

Tu peux aussi copier-coller le code SQL afin d'avoir à éviter de saisir la
syntaxe SQL




"Yann" a écrit dans le message de news:
365901c49ed8$b81d77c0$
Salut Leol,
Tu crées ta table et 3 requêtes d'ajout.

Bye
Yann

-----Message d'origine-----
Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le
champ ID qui

s'autoincrémente.
Quelqun sait il comment faire ?

Merci



.



Avatar
Yann
Salut Chris,
C'est vrai que la requête UNION est pratique pour faire
plusieur fois la même chose, mais tu ne peux pas faire un
ajout avec les union... Seulement un select...

Bye
Yann

-----Message d'origine-----
Hello

L'inconvénient est que tu devras ré-exécuter cette série
de requête chaque

fois que tu auras besoin d'info mises à jour.

Il existe une solution totalement dynamique : la requête
SQL UNION.

Attention tes tables doivent avoir leur champs nommés à
l'identique.

Même avec 3 tables elle est possible. Voici sa syntaxe :

SELECT table1.champ1, table1.champ2, etc... From table1
UNION
SELECT table2.champ1, table2.champ2, etc... From table2
UNION
SELECT table3.champ1, table3.champ2, etc... From table3;

Tu peux aussi copier-coller le code SQL afin d'avoir à
éviter de saisir la

syntaxe SQL




"Yann" a écrit dans le message
de news:

365901c49ed8$b81d77c0$
Salut Leol,
Tu crées ta table et 3 requêtes d'ajout.

Bye
Yann

-----Message d'origine-----
Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le
champ ID qui

s'autoincrémente.
Quelqun sait il comment faire ?

Merci



.




.




Avatar
Eric
Bonjour Leol, Yann, Chris,

En faisant la synthèse des réponses (Yann & Chris), voila une procédure
Tout-En-Un ;-)

La procédure crée une requête temporaire regroupant les données de tes 3
tables *sous réserve que les noms des champs soient identiques*. Puis
crée la table Fusion avec un ID autoincrémenté et récupère les
enregistrements de la requête temporaire. La requête temporaire est
supprimée à la fin du traitement. Cette procédure peut-être exécutée
autant de fois que necesaire, la table Fusion étant supprimée avant
d'être recréée.

Il faudra charger la référence Microsoft DAO 3.x Object Library dans le
projet.

En supposant que la procédure est lancée à partir d'un formulaire
avec un bouton de commande sur l'évènement clic.

Private Sub Commande0_Click()
Call UnionCreationTable
End Sub

Sub UnionCreationTable()
On Error GoTo Err_UnionCreationTable
Dim strSQL As String, qry As DAO.QueryDef
' Définition du sql requête Union rapatriant les données des 3 tables
' Union ALL récupère tous les enregistrements de chaque table
' donc possibilité de doublons. Union seul évite les doublons.
strSQL = "SELECT Field1, Field2, Field3, Field4 from T1 " _
& "Union All " _
& "SELECT Field1, Field2, Field3, Field4 from T2 " _
& "Union All " _
& "SELECT Field1, Field2, Field3, Field4 from T3;"
' Création de la requête temporaire Temp
Set qry = CurrentDb.CreateQueryDef("Temp", strSQL)
'Définition du sql de création de la table Fusion
strSQL = "Create Table Fusion(ID Autoincrement Constraint NumAuto
Primary Key, " _
& "Field1 Text, Field2 Text, Field3 Text, Field4 Text);"
' Création de la table Fusion avec un NumeroAuto en PK
CurrentDb.Execute strSQL
' Définition du sql d'ajout des enregistrements
' de la requête Temp dans la table Fusion
strSQL = "Insert into Fusion(Field1,Field2,Field3, Field4) " _
& "select Field1, field2, field3, field4 from Temp;"
' Remplissage de la table Fusion
CurrentDb.Execute strSQL
' Suppression de la requête Temporaire
CurrentDb.QueryDefs.Delete "Temp"
Set qry = Nothing
RefreshDatabaseWindow
Exit Sub
Err_UnionCreationTable:
' à Adapter
If Err = 3012 Then
CurrentDb.QueryDefs.Delete "Temp"
Resume
ElseIf Err = 3010 Then
CurrentDb.TableDefs.Delete "Fusion"
Resume
End If
End Sub

A+
Eric

"Leol" <Léo> écrivait news:414d90b6$0$283$:

Bonjour, J'ai 3 tables ayan tla même structure :
ID, Field1 , Field2 , Field 3, Field 4
J'aimerais réunir ces trois tables en une seule avec le champ ID qui
s'autoincrémente.
Quelqun sait il comment faire ?

Merci