Dédoublonner 2 tables, puis 3

Petit nouveau ! | 8 Messages

18 oct. 2005, 14:40

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é :(

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

18 oct. 2005, 14:52

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?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Petit nouveau ! | 8 Messages

18 oct. 2005, 15:07

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

18 oct. 2005, 15:12

Access ? Connais pas.
Va par là : http://access.developpez.com/cours/

ViPHP
pjl
ViPHP | 2119 Messages

18 oct. 2005, 15:37

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é.

Invité
Invité n'ayant pas de compte PHPfrance

18 oct. 2005, 16:40

ok pjl mais je ne sais pas faire de jointure externe :oops:

ViPHP
pjl
ViPHP | 2119 Messages

18 oct. 2005, 16:43

un tuto explicatif lié à Access : http://cerig.efpg.inpg.fr/tutoriel/base ... chap20.htm

ViPHP
ViPHP | 1024 Messages

18 oct. 2005, 18:46

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