par
zeus » 30 janv. 2007, 18:39
Tu peut t'en sortir avec les jointures.
Je m'explique :
Une jointure externe (OUTER JOIN) utilise toutes les données des 2 tables, même s'il n'y a pas de correspondances entre les 2 tables (dans ton cas, si l'id de la table1 n'existe pas dans la table2 ou vice versa).
Le soucis avec cette jointure, c'est qu'elle te remonte aussi les lignes qui ont des correspondances dans l'autre table (table1.id = table2.id)
Pour les supprimer, il suffit de ne sélectionner que les ligne où table1.id ou table2.id est vide, ce qui signifie que pour telle ligne, il n'y a pas correspondance dans l'autre table.
La requête sera donc de cette forme :
Code : Tout sélectionner
SELECT
t1.id,
t2.id
FROM
table1 t1 OUTER JOIN table2 t2 ON t1.id = t2.id
WHERE
t1.id IS NULL
OR t2.id IS NULL
J'espère avoir été clair sur mes explications mais si tu veux plus de détails sur les jointures, regarde ce tuto :
http://sqlpro.developpez.com/cours/sqlaz/jointures/
Tu peut t'en sortir avec les jointures.
Je m'explique :
Une jointure externe (OUTER JOIN) utilise toutes les données des 2 tables, même s'il n'y a pas de correspondances entre les 2 tables (dans ton cas, si l'id de la table1 n'existe pas dans la table2 ou vice versa).
Le soucis avec cette jointure, c'est qu'elle te remonte aussi les lignes qui ont des correspondances dans l'autre table (table1.id = table2.id)
Pour les supprimer, il suffit de ne sélectionner que les ligne où table1.id ou table2.id est vide, ce qui signifie que pour telle ligne, il n'y a pas correspondance dans l'autre table.
La requête sera donc de cette forme :
[code]SELECT
t1.id,
t2.id
FROM
table1 t1 OUTER JOIN table2 t2 ON t1.id = t2.id
WHERE
t1.id IS NULL
OR t2.id IS NULL[/code]
J'espère avoir été clair sur mes explications mais si tu veux plus de détails sur les jointures, regarde ce tuto : http://sqlpro.developpez.com/cours/sqlaz/jointures/