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 :

si null pas de condition


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut si null pas de condition
    bonsoir...
    j'ai vraiment besoin d'aide

    j'ai une procedure stockee

    avec 6 parametres

    mon probleme c'est que si un parametre recoit la valeur null

    je veux enlever la condition

    mais pas de if dans une clause select malheureusement

    j'ai une procedure comme ca je veux la developper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    alter proc rechvehicule
    @NomMarque varchar(30) = null,
    @NomModele varchar(30) = null,
    @nomCarburant varchar(30) = null,
    @NomVille varchar(50) = null,
    @PrixMax money = null,
    @PrixMin money = null
    as
    SELECT IDvehicule,v. NomMarque + '  ' +NomModele + ' ' +  convert(varchar(20),year(DatePrCir)) + ' ' + Ville + ' ' + ' : ' + convert(varchar(30),Prix) as titre ,  DateAnnonce, NombreVue, SrcPhoto,Comment FROM dbo.vehicule v,dbo.Modele m,dbo.Photo P 
    where
    p.IDIDvehicule=v.IDvehicule
    and
    v.IDmodele=m.IDmodele
    and
    v. NomMarque=@NomMarque
    and
    nomModele=@NomModele
    and
    nomCarburant=@NomCarburant
    and 
    nomVille=@NomVille
    and
    Prix between @PrixMax and @PrixMin
    c'est a dire si un parametre est null

    par example @NomModele=null

    il faut que sql affiche tous les modeles

    est ce qu'il y a une solution

    car il y a ici plusieurs test

    de l'aide svp

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonsoir,
    je pense que la solution suivante pourrait convenir à vos besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ALTER proc rechvehicule
    @NomMarque varchar(30) = NULL,
    @NomModele varchar(30) = NULL,
    @nomCarburant varchar(30) = NULL,
    @NomVille varchar(50) = NULL,
    @PrixMax money = NULL,
    @PrixMin money = NULL
    AS
    SELECT 
     IDvehicule,
     v. NomMarque + '  ' + NomModele + ' ' +  convert(varchar(20),year(DatePrCir)) + ' ' + Ville + ' ' + ' : ' + convert(varchar(30),Prix) AS titre ,  
     DateAnnonce, 
     NombreVue, 
     SrcPhoto,Comment 
    FROM dbo.vehicule v
    INNER JOIN dbo.Modele m
    ON v.IDmodele= m.IDmodele
    INNER JOIN dbo.Photo P 
    ON p.IDIDvehicule = v.IDvehicule
    WHERE (v. NomMarque = @NomMarque OR @NomMarque IS NULL)
    AND (nomModele = @NomModele OR @NomModele IS NULL)
    AND (nomCarburant = @NomCarburant OR @NomCarburant IS NULL)
    AND (nomVille = @NomVille OR @NomVille IS NULL)
    AND (Prix BETWEEN @PrixMax AND @PrixMin)
    ++

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 8
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    Bonsoir,
    je pense que la solution suivante pourrait convenir à vos besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ALTER proc rechvehicule
    @NomMarque varchar(30) = NULL,
    @NomModele varchar(30) = NULL,
    @nomCarburant varchar(30) = NULL,
    @NomVille varchar(50) = NULL,
    @PrixMax money = NULL,
    @PrixMin money = NULL
    AS
    SELECT 
     IDvehicule,
     v. NomMarque + '  ' + NomModele + ' ' +  convert(varchar(20),year(DatePrCir)) + ' ' + Ville + ' ' + ' : ' + convert(varchar(30),Prix) AS titre ,  
     DateAnnonce, 
     NombreVue, 
     SrcPhoto,Comment 
    FROM dbo.vehicule v
    INNER JOIN dbo.Modele m
    ON v.IDmodele= m.IDmodele
    INNER JOIN dbo.Photo P 
    ON p.IDIDvehicule = v.IDvehicule
    WHERE (v. NomMarque = @NomMarque OR @NomMarque IS NULL)
    AND (nomModele = @NomModele OR @NomModele IS NULL)
    AND (nomCarburant = @NomCarburant OR @NomCarburant IS NULL)
    AND (nomVille = @NomVille OR @NomVille IS NULL)
    AND (Prix BETWEEN @PrixMax AND @PrixMin)
    ++
    merci c'est peut etre une solution
    je vais essaye meme si j'ai trouve une solution dans l'application cliente
    a+

  4. #4
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Et quelque chose du genre sinon, je ne sais pas si point de vue performance il y a des différences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    ALTER proc rechvehicule
    @NomMarque varchar(30) = NULL,
    @NomModele varchar(30) = NULL,
    @nomCarburant varchar(30) = NULL,
    @NomVille varchar(50) = NULL,
    @PrixMax money = NULL,
    @PrixMin money = NULL
    AS
    SELECT 
     IDvehicule,
     v. NomMarque + '  ' + NomModele + ' ' +  convert(varchar(20),year(DatePrCir)) + ' ' + Ville + ' ' + ' : ' + convert(varchar(30),Prix) AS titre ,  
     DateAnnonce, 
     NombreVue, 
     SrcPhoto,Comment 
    FROM dbo.vehicule v
    INNER JOIN dbo.Modele m
    ON v.IDmodele= m.IDmodele
    INNER JOIN dbo.Photo P 
    ON p.IDIDvehicule = v.IDvehicule
    WHERE 
    (v. NomMarque = COALESCE(@NomMarque, v. NomMarque))
    AND (nomModele = COALESCE(@NomModele, nomModele))
    AND (nomCarburant = COALESCE(@NomCarburant, nomCarburant))
    AND (nomVille = COALESCE(@NomVille, nomVille))
    AND (Prix BETWEEN @PrixMax AND @PrixMin)

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/11/2009, 17h59
  2. Réponses: 8
    Dernier message: 19/11/2008, 09h06
  3. Valeur Null dans une condition
    Par jmde dans le forum VBA Access
    Réponses: 8
    Dernier message: 29/07/2007, 04h48
  4. Réponses: 1
    Dernier message: 17/07/2007, 15h45
  5. [SQL] Ma requête renvoie tous les tuples et ne respecte pas la condition AND
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/02/2007, 13h33

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