IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Select ... Where.. NOT IN


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 33
    Points : 34
    Points
    34
    Par défaut Select ... Where.. NOT IN
    Bonjour! J'ai un petit souci face à une requete SQL!
    Ma requete est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT champ 
    FROM table1 
    WHERE champ NOT IN
          (SELECT champ FROM table2)
    Cette requete marche parfaitement quand il y a au moins une entrée dans la table2. Cependant quand la table2 est vide ma requete ne me renvoie rien! Quelqu'un a une explication et encore mieux une solution?
    Merci.

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut Re: Select ... Where.. NOT IN
    Une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT champ 
    FROM table1 
    LEFT OUTER JOIN table2 ON table1.champ=table2.champ
     
    WHERE table2.champ IS NULL
    Comme ça, en plus, ça marchera avec MySQL < 5.0.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 33
    Points : 34
    Points
    34
    Par défaut
    Merci bien!! Vraiment magique ces jointures!!

  4. #4
    Membre averti Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Points : 378
    Points
    378
    Par défaut
    Comme Oracle, leader du marché qui dans sa doc dit

    "La directive NOT IN doit être utilisée avec prudence car elle retourne FALSE si un membre ramené par la sous-interrogation est NULL."

    MySQL a le même défaut visiblement pour l'heure...
    Essaye cette même requete avec un NOT EXISTS du style pour voir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT champ 
    FROM table1 t1
    WHERE NOT EXISTS
          (SELECT t2.champ FROM table2 t2 where t1.champ=t2.champ)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL SELECT WHERE NOT EXISTS
    Par talietotoro dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/08/2023, 07h27
  2. [Doctrine] Requête select imbriquée dans un where not in
    Par Herode dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/03/2011, 14h43
  3. SELECT ... WHERE != ???
    Par Terminator dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/05/2005, 21h22
  4. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23
  5. Select * Where {}
    Par Thomad dans le forum Langage SQL
    Réponses: 14
    Dernier message: 16/10/2003, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo