Page 1 sur 1

Dédoublonner 2 tables, puis 3

Posté : 18 oct. 2005, 14:40
par gdrara
Salut à tous
Deuxième méga pb pour moi : j'ai 2 tables. Je souhiate lister les records de ces 2 tables, pour lesquels la valeur champ1 n'est pas commune. Je me sers de ce code (MSACCESS) :
SELECT [Table1].[Champ1] FROM [Table1] INNER JOIN [Table2] ON [Table2].[Champ1] = [Table1].[Champ1];
mais celui me retourne les valeurs communes. Je veux exactement l'inverse. Puis faire pareil sur une 3ieme table.
Merci bcp. Je suis largué :(

Posté : 18 oct. 2005, 14:52
par mere-teresa
Il manque quelques précisions :)

1. Quel système de SGBD ? (MS-SQL Server ? Oracle ? MySQL ?)
2. Tu veux des enregistrements qui sont uniques et qui ne se recoupent pas entre les tables ? Ou le contraire?

Posté : 18 oct. 2005, 15:07
par gdrara
Je suis sous Access. Pas trop le choix hélas.
Je souhaite la liste des records de la table 1 pour lesquels la valeur du champ1 n'est pas dans la table 2, et réciproquement.

Tu me suis ? :D

Posté : 18 oct. 2005, 15:12
par mere-teresa
Access ? Connais pas.
Va par là : http://access.developpez.com/cours/

Posté : 18 oct. 2005, 15:37
par pjl
1. c'est une jointure externe qu'il te faut puisque tu veux des élèments qui sont dans une table et pas dans l'autre
2. tu veux une différence et tu mets une condition d'égalité.

Posté : 18 oct. 2005, 16:40
par Invité
ok pjl mais je ne sais pas faire de jointure externe :oops:

Posté : 18 oct. 2005, 16:43
par pjl
un tuto explicatif lié à Access : http://cerig.efpg.inpg.fr/tutoriel/base ... chap20.htm

Posté : 18 oct. 2005, 18:46
par pascaltje
en SQL ça donne ça, à assaisonner à la sauce access:

Code : Tout sélectionner

SELECT table1.champ1 FROM table1 LEFT JOIN table2 ON table2.champ1 = table1.champ1 WHERE table2.champ1 IS NULL UNION SELECT table2.champ1 FROM table2 LEFT JOIN table1 ON table1.champ1 = table2.champ1 WHERE table1.champ1 IS NULL
(=on prend tout dans table 1 sauf ceux dans table 2 + idem en inversant 1 et 2)

et si tu veux le faire avec une 3e table, tu généralises :)

A+

Pascal