RESOLU [Access 2003] Requête jointure et union - SQL/NoSQL - Programmation
Marsh Posté le 11-02-2011 à 23:00:06
Il faudrait faire des jointures. Mais des jointures externes, des LEFT OUTER JOIN ou RIGHT OUTER JOIN, au lieu des INNER JOIN de base.
En choisissant la table 1 comme table principale de ces jointures, cela permettra de récupérer les cinq premières lignes de l'exemple.
Il manquera les 3 dernières lignes de l'exemple.
On pourra obtenir les 6e et 7e lignes en faisant un UNION avec une autre requête ayant des jointures externes dont la table principale sera la 3.
On pourra obtenir la 8e ligne de l'exemple en faisant un UNION avec encore une autre requête ayant des jointures externes, dont la table principale est la 2, cette fois-ci.
Pour éliminer les doublons, on fera un Select Distinct.
Marsh Posté le 12-02-2011 à 15:11:59
billgatesanonym a écrit : Il faudrait faire des jointures. Mais des jointures externes, des LEFT OUTER JOIN ou RIGHT OUTER JOIN, au lieu des INNER JOIN de base. |
Bonjour,
Merci beaucoup pour la réponse qui m'a bien aidé.
J'ai commencé par faire les 3 requêtes avec des jointures gauches à partir du champ Nom comme référence pour chacune des tables.
RQT1 Nom (Table1) pointant vers Nom (Table2) et Nom (Table3)
RQT2 Nom (Table2) pointant vers Nom (Table1) et Nom (Table3)
RQT2 Nom (Table3) pointant vers Nom (Table1) et Nom (Table2)
Une fois testées individuellement, je les aient regroupés dans une Requête UNION unique. En copiant/collant le SQL des mes 3 Requêtes.
Je n'ai pas eu besoin de faire un Distinct pour les doublons par dessus.
Voici le code que j'ai obtenue :
Code :
|
Marsh Posté le 11-02-2011 à 17:21:19
Bonjour,
Je coince sur un problème depuis un bon moment. Je vous expose ce que je veut faire. Regrouper les donnés de 3 tables comportant 2 champs avec une requête. Voici la structure des 3 tables :
Table 1 Table 2 Table 3
Nom Val1 Nom Val2 Nom Val3
A 12 A 48 A 62
B 10 C 69 B 19
C 32 D 78 D 23
D 50 G 67 F 21
E 55 H 18 G 11
Et je voudrais que la requête me donne le résultat suivant :
Nom Val1 Val 2 Val 3
A 12 48 62
B 10 19
C 32 69
D 50 78 23
E 55
F 21
G 67 11
H 18
Avec une requête UNION, chaque valeur dans le champ nom est dupliqué, sans "regroupement". car les enregistrements s'empilent à la suite sur 2 colonnes.
Avec une requête de jointure, je me rapproche de ce que je veut mais ça ne prend que les enregistrements qui sont en communs dans les 3 tables alors que je veut aussi les enregistrement qui se trouve isolés dans une table et non présents dans les autre.
Du coup je ne voit pas comment construire ma requête. J'utilise Access 2003.
J'ai lu qu'on pouvait faire des requêtes (Thêta) mais je ne sais pas si ça correspond à ma problématique, ni comment les faire.
J'espère que vous pourrez me donner la procédure ou des tutos sur ce problème.
Message édité par bpfonline le 12-02-2011 à 15:14:02