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
718
2
Utilisateur anonyme
... ain ! Mais c'est super complexe ! :'(
comment ça se fait qu'il n'existe pas de petiote requete toute simple ?
(j'avais essayé de combiner les 2 left join sur chacun des champs union les 2 right join ... mais c'est trop complexe !!)
0
Messages postés
180254
Date d'inscription
mercredi 17 mai 2006
Statut
Modérateur, Contributeur sécurité
Dernière intervention
26 mars 2021
24 505
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.
0
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
0
Messages postés
180254
Date d'inscription
mercredi 17 mai 2006
Statut
Modérateur, Contributeur sécurité
Dernière intervention
26 mars 2021
24 505
ha ok, j'avais pas compris, désolé :)
0
Utilisateur anonyme
pas de blem ... je ne pensais pas non plus que le problème serait si dur.
0
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
718
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.
1
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 ?
0
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
718
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
0
Utilisateur anonyme
c'est testé et ça marche ^^
0
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
718
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.
0
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)
0
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
718
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 :)

++
0
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
0
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
718
PK = primary key. M'enfin, pas vraiment nécessaire, un simple index suffit.
0