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 :

Requete entre champ null et champ vide


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 169
    Points : 68
    Points
    68
    Par défaut Requete entre champ null et champ vide
    Bonjour,
    J'ai une requete qui lie 2 tables par 4 champs, nom prénom service et site (table 1 = CRA, table 2 = collaborateurs).
    Le prénom n'est pas toujours présent, le problème c'est que quelque fois le champs apparait null dans une des tables. Etant "" dans l'autre la correspondance ne se fait pas.
    Voilà la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tmpTableCRAtraite.Mois, tmpTableCRAtraite.Nom, tmpTableCRAtraite.Prénom, tmpTableCRAtraite.Service, tmpTableCRAtraite.Site, Sum(tmpTableCRAtraite.Temps) AS SommeDeTemps, tmpTableCRAtraite.Code, CodeBipGT1.Etape, Collaborateurs.[Code ressource], Collaborateurs.[Fichier absence], Collaborateurs.[Clé absence], Collaborateurs.[Libellé absence], Collaborateurs.[Fichier activité], Collaborateurs.[Clé activité], Collaborateurs.[Libellé activité]
    FROM (tmpTableCRAtraite LEFT JOIN CodeBipGT1 ON tmpTableCRAtraite.Code = CodeBipGT1.Code) LEFT JOIN Collaborateurs ON (tmpTableCRAtraite.Nom = Collaborateurs.Nom) AND (tmpTableCRAtraite.Service = Collaborateurs.Service) AND (tmpTableCRAtraite.Site = Collaborateurs.Site) AND (tmpTableCRAtraite.Prénom = Collaborateurs.Prénom)
    GROUP BY tmpTableCRAtraite.Mois, tmpTableCRAtraite.Nom, tmpTableCRAtraite.Prénom, tmpTableCRAtraite.Service, tmpTableCRAtraite.Site, tmpTableCRAtraite.Code, CodeBipGT1.Etape, Collaborateurs.[Code ressource], Collaborateurs.[Fichier absence], Collaborateurs.[Clé absence], Collaborateurs.[Libellé absence], Collaborateurs.[Fichier activité], Collaborateurs.[Clé activité], Collaborateurs.[Libellé activité]
    HAVING (((Sum(tmpTableCRAtraite.Temps)) Is Null)) OR (((tmpTableCRAtraite.Code) Is Null)) OR (((Collaborateurs.[Code ressource]) Is Null)) OR (((Collaborateurs.[Fichier absence]) Is Null)) OR (((Collaborateurs.[Clé absence]) Is Null)) OR (((Collaborateurs.[Libellé absence]) Is Null)) OR (((Collaborateurs.[Fichier activité]) Is Null)) OR (((Collaborateurs.[Clé activité]) Is Null)) OR (((Collaborateurs.[Libellé activité]) Is Null));
    Je précise que la première table (CRA) est issu d'un import Excel, l'autre étant un table stockée ans access.

    Comment faire pour passer que le champ soit null ou vide ?
    Avez-vous une solution ?

    Merci de l'aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    Bonjour,
    une solution peut être d'utiliser la fonction Nz() sur tes champs

    exemple :

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    dans ta jointure, tu peux mettre des fonctions.

    ici, tu pourrais mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ...
    FROM...
    AND (NZ(tmpTableCRAtraite.Prénom,"") = NZ(Collaborateurs.Prénom,""))
    La fonction NZ teste le premier argument (ici le prenom). S'il est null, il renvoie le second argument (ici ""). Ainsi, cela te permet de faire la jointure des champs Null avec ""

  4. #4
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    Merci pour la réponse.

    Sauf si je n'ai pas bien fait cela ne marche pas dans le join.
    J'ai fait comme cela dans la requete en l'éditant en mode SQL-Direct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN Collaborateurs ON (Nz(tmpTableCRAtraite.Prénom,"") = Nz(Collaborateurs.Prénom,"")) AND (tmpTableCRAtraite.Site = Collaborateurs.Site) etc etc
    L'icone de la requete passe comme une mapmonde au lieu de 2 tables et il ouvre une fenêtre pour sélectionner une source de données quand je l'exécute.

    Mais le problème ne vient peut-être pas de là car même si je reviens en arrière cela ne revient pas OK.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 169
    Points : 68
    Points
    68
    Par défaut
    Caaa maaaarche !!!
    Il y a bien un truc qui cloche avec Access 2007 car j'ai fait la modif de la requête sous Access2003 et là ça passe trés bien, y compris après de retour sous 2007.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/08/2008, 12h46
  2. Requete avec des champs null
    Par passie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/06/2006, 15h11
  3. Réponses: 3
    Dernier message: 28/02/2006, 17h52
  4. Champs NULL ou champs vide
    Par jexl dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 20/10/2005, 19h10
  5. INSTR sur un champ vide, Detecter un champ null
    Par rodolphedj dans le forum ASP
    Réponses: 4
    Dernier message: 06/09/2004, 15h24

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