Ce mémo a été publié le 16 septembre 2010 et peut contenir des informations qui peuvent être incomplètes, non mises à jour voir erronées du fait de son ancienneté.
N'hésitez pas à compléter votre recherche sur des articles plus récents.
Voici une requête qui permet d’afficher les lignes de la table tbl_A qui ne sont pas dans la table tbl_B
1 2 3 |
SELECT * FROM tbl_A WHERE champ_a_comparer_tbl_A NOT IN( SELECT champ_a_comparer_tbl_B FROM tbl_B; ); |
merci d’avance
c’est quoi « champ_a_comparer_tbl_A »?
C’est le nom du champ.
Ex :
SELECT * FROM tbl_ListeVoitureA WHERE fld_couleurA NOT IN(
SELECT fld_couleurB FROM tbl_ListeVoitureB;
);
Affiche la liste des enregistrements de la table tbl_ListeVoitureA pour lesquelles il n’y a pas de correspondance entre les champs fld_couleurA de la table tbl_ListeVoitureA et fld_couleurB de la table tbl_ListeVoitureB.
ok,merci
est ce que je peux ajouter a un code java
si oui,comment
j’ai fait des essais sur wampserver mais malheureusement ça marche pas!
Je viens de tester la requête sous MsAccess. Elle fonctionne.
Sous MySQL, il faut peut-être supprimer le point-virgule à la fin de la requête SELECT :
SELECT * FROM tbl_A WHERE champ_a_comparer_tbl_A NOT IN(
SELECT champ_a_comparer_tbl_B FROM tbl_B
);
Pour l’utilisation avec Java, je n’ai pas assez d’expérience dans ce langage. Si c’est un lien ODBC ou ADO qui est utilisé, je pense que cela devrait fonctionner.
Après cela dépend de la base de données utilisée. Le code ci-dessus est qualifié pour MsAccess et MySQL; par contre, je ne sais pas si c’est le même pour Oracle ou SQL Server (qui ont tendance à utiliser une syntaxe différente).
A vérifier.
j ai fais
Select * From Tab where (Tab.mois= »Janvier ») and (Tab.champ1 not in (Select Champ1 From Tab where Tab.champ1= »Fevrier »)
cette requête prend de temps sans réponse
J’ai un petit peu de mal à comprendre l’objectif de la requête…
Mais en essayant d’utiliser not in dans une table de 20 miles lignes, la machine rame d’ou l’autre astuce serait de mettre not exists à la place de not in
Bien vu, merci pour le retour.
ce code fonctionne en SQL ?
Euh que répondre à cette question ?
Vous pouvez développer ?
c que je veux c’est de comparer deux listes de nom dans des tables diffèrents , s’il y’as des noms ressemblable , je veux qu’ils s’affichent dans une liste
Cette requête fait l’inverse.
Mais il suffit d’enlever « NOT » pour avoir les correspondances.
Bonjour , si c’est possible une requête qui permet de comparer une liste des noms avec elle même , elle compare que les 5 premiers lettres
en SQL
A part avec une fonction programmée dans le langage utilisé, je crois pas que ce soit directement faisable en SQL.
Super sa fonctionne sous sql; mais sans le point virgule à l’intérieur de la parenthèse
SELECT * FROM tbl_A WHERE champ_a_comparer_tbl_A NOT IN(
SELECT champ_a_comparer_tbl_B FROM tbl_B
);
Bonjour,
Pour ma part je tente de faire la comparaison de deux tables de la façon suivante :
SELECT * FROM cs_pda WHERE pda IN (‘pdaspni2’) AND callserver IN (‘1’) AND sortie IN (‘DMI33I007’) NOT IN(
SELECT INDICATEUR, SORTIE FROM ref_bouygues
);
Cependant cela ne fonctionne pas sur SQLyog…
J’ai également effectué cette commande :
SELECT * FROM ref_bouygues WHERE sortie NOT IN(SELECT sortie FROM cs_pda);
Sans résultat non plus…
Besoin d’un petit coup de pouce?
Je ne connais pas SQLyog, mais à priori similaire à phpMyAdmin.
Y’a-t-il un message d’erreur ?
Merci beaucoup, c’est ce que je cherchais…
Helas là logique me manquait
Merci 😉
Bonjour,
merci c’est ce que je recherche
Paul
ça doit le faire aussi :
SELECT * FROM tbl_A A LEFT JOIN tbl_B B ON B.champ_a_comparer_tbl_B=A.champ_a_comparer_tbl_A WHERE B.champ_a_comparer_tbl_B IS NULL;