-
Différence entre tables
Bonjour,
J'aimerais effectuer une requête permettant de n'afficher en résultat que la différence entre deux tables (test sur un champ pas table uniquemet).
Exemple :
table_1 :
id_table_1 = 1
id_table_1 = 2
id_table_1 = 3
id_table_1 = 4
id_table_1 = 5
id_table_1 = 6
table_2 :
id_table_2 = 1
id_table_2 = 2
id_table_2 = 4
Résultat à afficher :
id = 3
id = 5
id = 6
Sachant qu'un id appartenant à la première table existera toujours dans la première.
Existe-t'il une fonction du type "INNER JOIN" mais inversée pour effectuer ce genre d'opération ?
En espérant avoir été suffisamment clair, merci pour vos réponses.
-
essaye ceci :
Code:
SELECT table1.id FROM table1, table2 WHERE table1.id != table2.id
-
Bon pour l'instant, je n'ai aucun résultat trouvé, j'ai dû rater quelque chose. :(
EDIT : Mes tables ne sont pas identiques, est-ce que ça peut poser problème ?
-
Du nouveau,
Ma 2° table étant vide, j'ai créé une ligne. Maintenant, le résultat de la requête correspond à une égalité du test :
table1.id != table2.idet non à une inégalité, et me renvoie donc toujours le même résultat. L'inverse de ce qui est demandé.
Code:
SELECT revisions.rev_id, revisions.rev_quest, revisions.rev_image, revisions.rev_qcm, revisions.rev_choix_1, revisions.rev_choix_2, revisions.rev_choix_3, revisions.rev_choix_4, revisions.rev_rep FROM revisions, rev_suivi WHERE (revisions.rev_niveau<="'.$_POST['niveau'].'" and revisions.rev_id != rev_suivi.rs_id_quest)
-
Bonjour,
Ca ne marchera pas avec la requête proposé mais avec une sous requête oui.
Code:
SELECT* FROM table1 WHERE id_table_1 NOT IN(SELECTid_table2 FROM table2)
pas testé mais c'est dans l'esprit.
ensuite si tu peux aussi faire cela.
Code:
SELECT* FROM table1 LEFT JOIN table2 on id_table_1 = id_table_2
jointure à gauche, tu va avoir tous les id de la table 1 qui ont ou non un id dans la table 2 sauf que dans le même temps tu auras les di tables 2 pour ceux qui existent, null pour les autres. en parcourant ton résultat, tu peux travailler la dessus et ne prendre en compte que ceux qui ont in id_table2 qui vaut null
-
Super,
Ça fonctionne, j'ai essayé avec la solution "NOT IN" qui me semble dans ce cas plus adaptée !
Merci beaucoup