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 :

Requête sur 3 champs dont une donnée est "vide" et ne me retourne pas la donnée du champ [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Requête sur 3 champs dont une donnée est "vide" et ne me retourne pas la donnée du champ
    Bonjour,

    Voila j'ai deux tables sur lesquelles porte ma requête,

    Table 1 : colonne 1 (chaîne de caractère) colonne 2 ( un int)

    Table 2 (simplifiée): colonne 1 (identique a la table 1) plein d'autre non utilisé.


    la requête donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Col2  FROM Table2 LEFT JOIN  Table1 ON Table2.col1 = Table1.col1
    quelque chose de pas compliqué, bien que le problème l'est ^^

    Dans ma table 1 j'ai cette ligne :
    col1 col2
    "" "122"

    dans ma table2 :
    col1
    ""

    donc la requête devrait me donner "122" or le champ est vide

    une petite aide ?

    merci d'avance

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Question : c'est "" ou c'est NULL ?

  3. #3
    Membre habitué Avatar de cynferdd
    Profil pro
    Analyste Développeur .Net, PHP, SQL Server
    Inscrit en
    Avril 2003
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Développeur .Net, PHP, SQL Server

    Informations forums :
    Inscription : Avril 2003
    Messages : 154
    Points : 190
    Points
    190
    Par défaut
    Je pense que la remarque de Maxence est pertinente : à mon avis tu dois avoir un null quelque part. A noter que même si tes 2 "Col1" sont null, tu ne pourras pas récupérer ton résultat.

    Une solution possible, au niveau de ta jointure, serait de faire ça éventuellement (si tant est que tu considère que null et "" soient bien la même chose dans ton cas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table1.Col2  FROM Table2 LEFT JOIN  Table1 ON NZ(Table2.col1,"") = NZ(Table1.col1,"")
    Note : je ne connais pas bien access, mais Nz est sensé faire le même travail qu'un ISNULL en SQLServer, à savoir remplacer les valeurs nulles par le deuxième paramètre (ici une chaine vide)
    A faire et à défaire on finit par ne plus rien faire.

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    En fait, je comptais aller un peu plus loin, en parlant du sens "sémantique" de NULL et de ""

    NULL signifie "Je ne sais pas"
    "" signifie "Je sais qu'il n'y en a pas"

    Donc, tenter de lier quelque chose qu'on ignore (NULL) avec une autre chose qu'on ignore... ou quelque chose qu'on sait qu'il n'existe pas avec autre chose avec autre chose qu'on sait qu'il n'existe pas...
    c'est moyen.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci de vos réponses,

    Alors pour préciser, le champ est vide donc pour moi ce serai ""

    mais je viens de faire un test Access considère que c'est Null
    le requête sur seulement les deux champ de la table 1 fonctionne(ce qui peu paraître logique non ?).

    ensuite je fais la requête sur plusieurs enregistrement exemple le résultat de la requête peut donner ceci :

    col1--col2
    str----63
    ""-----122
    str2---42
    en sachant que la colonne 1 des deux table est identique (l'une provient de l'autre) et qu'elle ne peut être modifiée.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    cynferdd,

    Merci cela fonctionne bien !

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Tu peux remplacer les valeurs Null par une chaîne vide ("")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Table1 SET col1 = "" WHERE (col1) Is Null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Table2 SET col1 = "" WHERE (col1) Is Null
    Ensuite dans la définition des champs col1 des tables Table1 et Table2, tu peux interdire les valeurs Null.
    Propriété «Null interdit» : Oui
    Propriété «Chaîne vide autorisée» : Oui
    Propriété «Valeur par défaut» : ""

    A+

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

Discussions similaires

  1. [Toutes versions] Mettre le focus sur un champ dont le nom est contenu dans une variable
    Par possible924 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2015, 21h32
  2. Réponses: 1
    Dernier message: 14/06/2010, 11h02
  3. Requête "select" sur deux tables dont une vide
    Par Torgar dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/10/2009, 09h27
  4. [MySQL] Requête sur un client d'une base de donnée
    Par minimouse dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 22/05/2009, 17h42

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