SQL différences entre 2 tables [Résolu/Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour,

Ce problème à déjà été posé auparavant de façon plus ou moins claire, j'ai essayé moi même quelques methodes, malheureusement infructueuses :-(

Je veux juste comparer deux table
Tab1
A | 1
B | 2
C | 3

Tab 2
A | 1
B | 3
D | 4

Et obtenir toutes les entrées qui ne sont pas identiques.
Donc ici :
B | 2
C | 3
B | 3
D | 4

Je suis sur que la réponse ne va pas etre si compliquée et que donc je vais enrager de pas l'avoir trouvé mais je suis telelment dedans jusqu'au cou que je trouve plus rien :-(

3 réponses

Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
180215
Date d'inscription
mercredi 17 mai 2006
Statut
Modérateur, Contributeur sécurité
Dernière intervention
24 novembre 2020
22 693
bha non c'est tout dans le not in.

genre si t'as une table voiture_deluxe avec un champs ID_MARQUE
et une table voiture_pourrie avec un champs ID_MARQUE

si tu veux les marques des voitures_deluxe qui sont pas dans voiture_pourrie ça donne :

select a.ID_MARQUE from voiture_deluxe a where a.ID_MARQUE not in (select b.ID_MARQUE voiture_pourrie b);

en gros tu regarde les a.ID_MARQUE qui sont pas dans le résultats du select de la table voiture_pourrie.
Utilisateur anonyme
pas vraiment Malekal :
Si on suppose que l'ID_Marque, c'est le champs 2 dans mon exemple
avec ta methode, je ne remonterai pas les lignes ou ID_Marque = 3
Parce que j'aurai un 3 dans chaque table ... mais ils ne correpondront pas à la même voiture
Messages postés
180215
Date d'inscription
mercredi 17 mai 2006
Statut
Modérateur, Contributeur sécurité
Dernière intervention
24 novembre 2020
22 693
ha ok, j'avais pas compris, désolé :)
Utilisateur anonyme
pas de blem ... je ne pensais pas non plus que le problème serait si dur.
Messages postés
180215
Date d'inscription
mercredi 17 mai 2006
Statut
Modérateur, Contributeur sécurité
Dernière intervention
24 novembre 2020
22 693
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
Et pis, avec Oracle, il y a aussi cette possibilité http://www.dba-oracle.com/t_sql_subtract_result_sets.htm Sais pas pour les autres bases de données.
Utilisateur anonyme
Je ne suis pas encore assez bon pour piger la réponse qui a pourtant l'air simplissime :/
sid_abs est une donnée cachée sur la table ou la requête ?
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
Euh, je ne pige pas moi non plus. Lol. J'avais donné le lien à cause de s simplicité et car je connais le gars (il a d'autres manières de faire moins absconses XD)

Mais, de toute manière, il me semble (à tester) que le SUBTRACT (ou MINUS) devrait marcher si tu fais un SELECT sur plusieurs colonnes (à savoir, toutes les colonnes de ta table).

On arriverait donc à

SELECT col1, col2, col3
FROM t1
MINUS
SELECT col1, col2, col3
FROM t2
union
SELECT col1, col2, col3
FROM t2
MINUS
SELECT col1, col2, col3
FROM t1

Hum. A tester
Utilisateur anonyme
c'est testé et ça marche ^^
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
Mdrr. Lol. Donc mon beau 1er lien théorique (que je n'ai même pas lu, mais bon, j'ai pris quand même le soin d'admirer les tophos) est inutile ?

Snifeu.
Utilisateur anonyme
Encore plus mdr, encore plus lol :
Non, c'est que la réponse avec les minus que tu viens de donner, c'est celle qu'il y a dans ton bea 1er lien théorique (ce qui nous permet de comprendre que, en effet, tu ne l'as pas lu)
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
Ben il y a SUBTRACT mais c'est pour avoir les différences sur les PK... Si tu te contenterais de voir les différences au niveau de la PK, une union de 2 subtract ferait l'affaire. MAis comme t'es gourmand, ça se paie :)

++
Utilisateur anonyme
C'est quoi les PK ?

Et SUBTRACT, c'est pas plutot MINUS ?
Parce que la solution proposée dans le lien que tu m'a passée est en effet une union de deux minus.

Bon ... ils ralent parce qu'elle est couteuse en temps mais je crois que c'est quand même celle que je vais prendre pour l'intant
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
692
PK = primary key. M'enfin, pas vraiment nécessaire, un simple index suffit.