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 et SQL. Discussion :

Not In et Null [AC-2000]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Par défaut Not In et Null
    Bonjour,

    Je voudrais afficher plusieurs champs d'une table en filtrant un de ces champs tel qu'il soit dans une autre table. J'ai donc ce code:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TEMP_PDA.OF, TEMP_PDA.Connecteur, TEMP_PDA.[Cms composant], TEMP_PDA.[Trace composant], TEMP_PDA.[Login opérateur], TEMP_PDA.Date
    FROM TEMP_PDA
    WHERE (((TEMP_PDA.[Cms composant]) Not In (Select [Articles-composants].[Cms] from [Articles-composants] where  [Articles-composants].[Cms] Is Not Null )));

    J'ai rajouté le "where [Articles-composants].[Cms] Is Not Null" après m'être rendu compte que le faite qu'il y ai des enregistrements Null empechait la requête de fonctionner.

    Au final la requête marche et m'affiche tous les enregistrements ne se trouvant pas dans la seconde table mais également les enregistrements Null qui sont pourtant corrects.

    Je présume que l'utilisation de Not In n'est efficace qu'avec les champs clés primaires.

    Comment faire?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 407
    Par défaut
    Je présume que l'utilisation de Not In n'est efficace qu'avec les champs clés primaires.
    Non tu peux utiliser Not In sur n'importe quel champ.

    Si tu veux seulement la liste des enregistrements qui sont dans TEMP_PDA et pas dans [Articles-composants] pourquoi ne pas faire une jointure qui affiche tous les enr de TEMP_PDA et seulement ceux de [Articles-composants] qui existent et ne sélectionner que les enr de TEMP_PDA où [Articles-composants].[Cms] is null.

    Ce sera plus direct et normalement plus rapide puisque IN() n'est pas optimisable.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 52
    Par défaut
    Ok merci, j'ai essayé et ça marche beaucoup mieux mais finalement je vais imposer à l'utilisateur de saisir quelque chose pour ce champ et je n'aurai, du coup, plus ce problème.

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

Discussions similaires

  1. Exception étrange : This parser does not support specification "null" version "null"
    Par laurent_m dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 02/11/2010, 16h20
  2. IN , NOT IN et NULL
    Par Invité dans le forum Développement
    Réponses: 3
    Dernier message: 26/08/2008, 16h36
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. Réponses: 8
    Dernier message: 24/07/2003, 10h45
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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