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 :

champs vides non retournés par une requête


Sujet :

Requêtes et SQL.

  1. #1
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut champs vides non retournés par une requête
    Bonjour

    J'ai un problème sur une base Access2000 que je ne comprend pas :
    Une table avec deux champs : id (numeroAuto) et tag (texte). dans ce champs tag, plusieurs valeurs sont possibles : 'A', 'B' et rien (pour l'exemple).

    Si je fais une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where tag<>'A'
    les enregistrements retournés sont uniquement ceux pour lesquels tag='B', ceux qui ne contiennent rien ne sont pas retournés.

    Une explication ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    La comparaison de null avec autre chose est toujours problématique.

    Nornalement n'importe quoi et 'null' donne null mais il arrive parfois que cela ne soit pas vrai.

    Là ton test [Tab]<>'A' renvoi 'Null' ce qui n'est pas 'vrai' ajoute et tu vas avoir tous les enr que tu veux.

    A+

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    ou:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where nz(tag,"")<>'A'
    mais le plus simple reste à mettre dans la propriété du champ 'null interdit':oui.
    ainsi le champ n'est plus null mais vide="" et là la comparaison peut se faire correctement.

  4. #4
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Merci pour vos réponses

    ajoute Code :
    or IsNull([tag])
    et tu vas avoir tous les enr que tu veux.
    Oui, je m'en était sorti comme ça (en fait avec or not tag is null)et ça marche impec, mais j'avoue qu'au bout de six ans de pratique d'access, cette particularité m'a un peu troublé.

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par roro06
    mais j'avoue qu'au bout de six ans de pratique d'access, cette particularité m'a un peu troublé
    il faut que tu comprennes l'importance de la nullité:
    pour exemple:
    à une réponse d'un vote tu as M. "A", M. "B", blanc: "" mais aussi: n'a pas voté=null.
    alors where vote<>"A" ne peut pas inclure ceux qui n'ont pas voulu/pu participer.
    le null représente l'existence d'une réponse ce qui est différent de "vide" qui suppose une présence de réponse non formalisée.

    j'espère t'avoir éclairci sur l'importance que null<>"A" doit renvoyer null et pas une valeur booléenne.

Discussions similaires

  1. Nombre de rows retournés par une requète
    Par awalter1 dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 03/07/2008, 09h17
  2. Réponses: 4
    Dernier message: 21/02/2008, 22h35
  3. [HQL] Nombre de colonnes retourné par une requête
    Par Fr@ncky dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/07/2007, 13h47
  4. Réponses: 2
    Dernier message: 31/05/2007, 10h57
  5. [SQL] Valeur retournée par une requête...
    Par Empty_body dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/01/2006, 22h13

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