Selection de données non présentes dans une seconde table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Selection de données non présentes dans une seconde table

par mike1155 » 08 mai 2006, 07:10

Code : Tout sélectionner

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE (table2.Id IS NULL AND login IS NULL) OR (table2.id=table1.id and ligin<>'ceci') OR (table2.id=table1.id AND login IS NULL)
Voilà, en rajoutant ces petites conditions, cela fonctionne!

Merci à tout ceux qui m'ont aidé sur ce problème

par mike1155 » 07 mai 2006, 21:02

Code : Tout sélectionner

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE table2.Id IS NULL AND login='ceci'
Voila j'ai pas vérifié mais c'est quelques choses comme ca
Voilà, après quelques tests, cela ne semble pas fonctionner!

Si j'enlève le AND login='ceci', j'ai bien les éléments dont l'id n'est pas dans la table2 mais il semblerait que la condition sur le login fausse la sélection...

Une petite piste? J'ai essayé les parenthèses sans succès!

Merci beaucoup

par mike1155 » 06 mai 2006, 07:55

Merci beaucoup....je vais voir si je peux adapter cela à mon cas! Merci

par Cobaye » 05 mai 2006, 09:18

Code : Tout sélectionner

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id = table2.id WHERE table2.Id IS NULL AND login='ceci'
Voila j'ai pas vérifié mais c'est quelques choses comme ca

par zeus » 05 mai 2006, 09:16

Si tu disposes d'une version de MySQL > 4.1, tu peut utiliser les sous-requetes et l'operateur SQL NOT IN

Code : Tout sélectionner

SELECT t1.id, t1.nom FROM table1 t1 WHERE t1.id NOT IN ( SELECT t2.id FROM table2 t2 WHERE login LIKE 'ton_login')
Sinon, il faut que tu réalises 2 requetes : 1 pour obtenir la liste des identifiants dans la table2, que tu concatène ses identifiants en une chaine et que tu remplace la sous-requete dans mon exemple par cette liste d'identifiant

Selection de données non présentes dans une seconde table

par mike1155 » 05 mai 2006, 08:07

Bonjour, voilà mon problème,
j'ai deux tables:
table1
id | nom
1 | alpha
2 | beta
3 | gamma
...

table 2
id | login
1 | ceci
1 | cela
2 | ceci

Je voudrais récupérer les id de la première table qui ne sont pas dans la seconde pour un login particulier

Par exemple, pour le login ceci, la requête devra renvoyer 3
poru le login cela, la requête devra renvoyer 2 et 3

Merci de votre aide

PS: il doit y avoir de la jointure de table mais je ne sais pas comment formuler cette "non-présence"