Bonjour à tous,

Je débute en SQL ce jour même et j'avoue ne pas encore avoir saisi les BABA de cette méthode de programmation. Je m'excuse donc d'avance si mon problème peut sembler trivial ou absurde. Pour info je travaille sous ACCES (ce qui dans certains cas ne m'a pas simplifié la vie !)

Ma démarche est la suivante :
Je possède 3 tables de données (appelons les A,B et C) avec chacune une donnée colonne de même nature (DATE) mais de valeurs différentes. Les autres colonnes diffèrent d'une table à l'autre.

Je souhaite créer une table unique (appelée par la suite U), regroupant toute ces données et laissant des champs vide là où il n'y en a pas.

Exemple :

Table A
DATE X Y
14 2 A
15 4 B

Table B
DATE Z
14 3
17 2

Table U (résultat)
DATE X Y Z
14 2 A 3
15 4 B [rien]
17 [rien] [rien] 2
J'ai commencé par créer la table U (qui synthétise tout) en créant une structure de colonnes compatibles. Ensuite j'ai renseigné les champs DATE en fusionnant les champs des différentes tables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
INSERT INTO U ([DATE])
SELECT DATE
FROM unionage;
avec la requête union suivante (sans ALL pour éviter les doublons):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT DATE
FROM X
UNION
SELECT DATE
FROM Y;
Maintenant, et c'est là que je bute, j'essaie de transférer les données dans U en mettant à jour la table sous condition, j'ai essayé les algorithme suivants, sans succès :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
-- ESSAI 1 :
 
UPDATE U SET 
U.X , U.Y = ( SELECT A.X, A.Y FROM A
WHERE U.DATE=A.DATE);
 
 
-- ESSAI 2 :
 
UPDATE U SET 
U.X=A.X , U.Y = A.Y
WHERE U.DATE=A.DATE;
Si je n'ai pas été clair je peux apporter plus de précision. Merci d'avance pour votre contribution (même infructueuse )

NB : L'exemple est volontairement réduit à deux tables et 3 colonnes, afin d'expliquer simplement ma demande. En réalité je dois effectuer ce transfert pour 5 tables de données avec chacune plus de 20 colonnes à mettre à jour. Je cherche donc un code optimisé à ce besoin (et fonctionnel).