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

MS SQL Server Discussion :

= NULL, ne marche pas comment faire ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut = NULL, ne marche pas comment faire ?
    Bonsoir à tous,

    J'ai une FK qui peux avoir la valeur null.

    Et donc, dans ma procédure stocké, je peux avoir le cas où :

    Ce qui poserai problème.

    Alors certains disent qu'il faut éviter la valeur null, certes mais si ça un sens, comment faire ? (puisque une FK peut être null).

    J'aurai cru que '=null' aurait le même sens que 'is null', mais non null n'est pas une valeur. Y a t il une astuce alors ?

    Merci d'avance pour votre aide.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    NULL n'est egal à rien... Meme pas à NULL.
    Il faut utiliser :
    FK is null

    En même temps, tu parles de procédure et balance une condition ? assignation ?

    Que représente ton FK = NULL ?

    Poste ton code qu'on y voie peut etre un peu plus clair...

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    merci pour ta réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @RUB_ID		T_GUID,
    @SURUB_ID	T_GUID,
    AS
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB = @SURUB_ID)
    Ma requête simplifié c'est ça.

    Avec @SUBRUB_ID qui peut avoir la valeur null (si une image appartient directement à une rubrique ...).
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut
    Premier cas : @SURUB_ID IS NOT NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID AND FK_SURUB = @SURUB_ID)
    Deuxième cas : @SURUB_ID IS NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     *
    FROM       IMAGE, 
    WHERE     FK_RUB = @RUB_ID)
    Je te propose de faire du SQL Dynamique en fonction de ton paramètre @SURUB_ID.

    M'enfin, moi, au CTIFL, c'est comme cela que j'ai résolu le problème.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    D'abord merci pour ta réponse.

    J'ai pensé à cette solution (mettre un 'if else if' c'est bien ce que tu propose ?), mais si ce n'est pas le seul champs qui risque d'être null ? Et si dans notre requête y a déjà une série de IF ?

    En même temps si c'est la seul solution
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous pourriez écrire votre requête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT mesColonnes
    FROM monSchema.IMAGE,
    WHERE (
    		(@RUB_ID IS NULL OR FK_RUB = @RUB_ID)
    		AND
    		(@SURUB_ID IS NULL OR FK_SURUB = @SURUB_ID)
    	)
    Attention : NULL n'est pas une valeur, il représente l'absence de valeur.
    C'est pour cela que pour tester vous devez mettre IS (NOT) NULL, et que vous ne pouvez pas utiliser " = "

    @++

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

Discussions similaires

  1. Mon Delete ne marche pas!Comment faire?
    Par ghan77 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/01/2006, 16h45
  2. [MySQL] Order by qui marche pas, Que faire ?
    Par mulbek dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 06/01/2006, 14h48
  3. [XML] Je ne sais pas comment faire...
    Par New dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2005, 10h47
  4. Impact de balles, trace de pas... Comment faire???
    Par supergrey dans le forum DirectX
    Réponses: 1
    Dernier message: 15/07/2004, 13h46
  5. IS NOT NULL ne marche pas !!!! ??????
    Par SkyDev dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/04/2004, 17h08

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