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

Langage SQL Discussion :

un if en sql (Test sur champ NULL)


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut un if en sql (Test sur champ NULL)
    Bon je sais que sql n'est pas un langage fonctionnel mais un If m'aidera bien pour faire ma requete

    J'explique :

    J'ai un table ECM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Numero_client Numero_application Contrat
    0	NULL	1	
    1	0	0	
    1	1	1
    Et j'ai une requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ANd LFA.Numero_application = ECM.Numero_application
    Seulement je veux considerer que si le champ Numero_client est à Null alors c'est valable pr toutes les applications car LFA.Numero_application peut valoir n'importe quoi.

    donc qq du style :
    if( ECM.Numero_application != null) then LFA.Numero_application = ECM.Numero_application

    je sais pas si je suis clair, j'espere

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Il semble que tu écrives cela dans le cadre d'une jointure : utilise une jointure externe

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COALESCE(ECM.Numero_application, LFA.Numero_application) = LFA.Numero_application
    A +

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    comment ca en jointure externe ?

    natural join ?

    mais si je fais ca je risque de perdre de l'information car il risque de ne pas me prendre les lignes dont les champs sont à Null.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 49
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par SQLpro
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COALESCE(ECM.Numero_application, LFA.Numero_application) = LFA.Numero_application
    A +

    Je sais pas ce qu'est cette fonction mais en tout cas ca a l'air de bien marcher ..

    Merci bien
    je vais rechercher a quoi correspond cette fonction

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par vince_grenoblois
    comment ca en jointure externe ?

    natural join ?
    Jointure externe et natural join n'ont rien à voir, je parle bien de jointure externe, pour éviter de perdre des informations.

    Tu devrais poster la requête

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    je sais pas si je suis clair, j'espere
    Pas énormément en plus tu ne respectes pas les règles car
    1/Tu ne fournis pas ton modèle de données, la table LFA arrive par miracle.
    2/Tu ne fournis pas ton SGBD.

    Pour répondre strictement à ton
    if( ECM.Numero_application != null) then LFA.Numero_application = ECM.Numero_application
    qui est dans le where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    and (ECM.Numero_application IS NULL OR
    (LFA.Numero_application = ECM.Numero_application)
    )
    Mais je rejoins Mediat, il semblerait que dans ton cas une jointure externe pourrait convenir.

    Sinon pour manipuler les NULL selon les SGBD il y a
    Coalesce
    ISNULL
    NVL
    Nz

    Cordialement
    Soazig

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

Discussions similaires

  1. Tmap et test sur champ des tables en entrées
    Par Rgent dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 09/03/2009, 14h18
  2. Test sur champs
    Par idamarco dans le forum Langage
    Réponses: 23
    Dernier message: 21/11/2008, 15h30
  3. Filtre sur champ null ou vide
    Par pierrot67 dans le forum Débuter
    Réponses: 4
    Dernier message: 15/09/2007, 14h10
  4. Transact-SQL test sur valeur NULL
    Par samworld dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/08/2007, 00h11
  5. [debutant] test sur champ de formulaire vide
    Par eyango dans le forum Access
    Réponses: 1
    Dernier message: 25/08/2006, 19h17

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