Comparaison de deux tables sur deux champs

Comparaison de deux tables sur deux champs - SQL/NoSQL - Programmation

Marsh Posté le 21-04-2011 à 11:37:51    

Bonjour à tous,
 
Je suis sous MySQL 5.1
J'essaye de faire une requête visant à comparer deux tables, strictement identiques en structures.
La base de comparaison est une clé sur deux champs (id_client, id_article) et je souhaite donc récupérer la clé sur deux champs des enregistrements qui sont dans la table 1 et pas dans la table 2, mais sans l'inverse, c a d les champs qui sont dans la table 2 et non dans la table 1.
 
La requête 'parfaite' serait :
 
SELECT * FROM table1
MINUS
SELECT * FROM table2
 
Mais pas de Minus en MySQL
 
J'ai donc essayé ce que je pense être un équivalent :
 
SELECT * FROM table1
WHERE NOT EXISTS
(SELECT * FROM table2)
 
ou  
 
SELECT * FROM table1
NOT IN (SELECT * FROM table2)
 
 
la première ne me retourne aucun enregistrement alors qu'il y a bien deux enregistrements de plus dans la table1 que dans la table 2
 
la seconde me retourne une erreur de syntaxe. Mais celle ci je pense qu'il manque un WHERE, mais je ne sais quelle condition mettre vu que la clé porte sur id_client et id_article
 
Qu'est ce qui serait le mieux comme requete ? quelles sont mes erreurs ?
 
Merci pour vos explications

Reply

Marsh Posté le 21-04-2011 à 11:37:51   

Reply

Marsh Posté le 21-04-2011 à 11:53:05    

Code :
  1. SELECT table1.*
  2. FROM table1 t1
  3.      LEFT JOIN table2 t2
  4.           ON t1.id_client = t2.id_client AND t1.id_article = t2.id_article
  5. WHERE t2.id_client IS NULL 


Message édité par flo850 le 21-04-2011 à 11:53:53

---------------

Reply

Marsh Posté le 21-04-2011 à 14:18:51    

impec ça marche, j'avais du mal à saisir l'utilisation du LEFT JOIN, c'est maintenant on ne peut plus clair.
 
Merci

Reply

Marsh Posté le 21-04-2011 à 14:44:21    

de rien :jap:


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed