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 :

Filtrer sur critère ou pas


Sujet :

MS SQL Server

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut Filtrer sur critère ou pas
    Bonjour,

    Je me pose une question concernant les filtres dans les procédures stockées. Si ce filtre peut prendre une seule valeur ou toutes les valeurs.

    Je vais prendre un exemple pour mieux me faire comprendre : dans une procédure stockée qui retourne une liste de client et qui prend un paramètre (@TYPE_CLIENT) comment écrire la clause where ? Sachant que @TYPE_CLIENT peut prendre la valeur 1 (client pro) ou la valeur 2 (client particulier) ou toutes les valeurs. J'ai déjà rencontré 2 méthodes mais aucune ne me parait convenable.

    1ere méthode : Un "gros if" et 2 requetes ! Si @TYPE_CLIENT = 0 alors, je fais mon select sans where sinon je fais un select avec le where.

    2eme méthode : je construis ma requete sql dans un varchar puis j'exécute le varchar avec un EXECT(@MONVARCHAR)

    Et vous comment gérez vous ce problème ?

    Voici la table client pour l'exercice:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE dbo.CLIENT
    	(
    	ID int NOT NULL,
    	NOM varchar(50) NULL,
    	TYPECLIENT int NULL
    	)  ON [PRIMARY]
    et voici la procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE PROCEDURE [dbo].[GetListeCLIENT]
    	@TYPE_CLIENT int
    AS
    BEGIN
    	select ID, NOM
    	from CLIENT
               where ???
     
    END
    Merci d'avance pour vos avis

  2. #2
    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
    Quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE PROCEDURE [dbo].[GetListeCLIENT]
    	@TYPE_CLIENT int
    AS
    BEGIN
    	SELECT ID, NOM
    	FROM CLIENT
               WHERE TypeClient = CASE WHEN @TYPE_CLIENT = 0 THEN TypeClient ELSE @TYPE_CLIENT END
     
    END
    devrait fonctionner ?

  3. #3
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Je n'y avais pas pensé mais oui ca fonctionne et ca me parait être une bonne solution
    Si quelqu'un voit une solution plus adapté, faites moi signe mais je pense que l'on s'approche de ce qui est mieux.
    Merci beaucoup

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

Discussions similaires

  1. [6.5] Filtrer sur 2 critères
    Par lenka33 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/07/2009, 07h37
  2. filtre fonctionne sur un "=" et pas sur un "&
    Par hugo69 dans le forum Access
    Réponses: 3
    Dernier message: 21/11/2005, 11h52
  3. Changment de débit sur Windows mais pas Linux
    Par Nasky dans le forum Réseau
    Réponses: 3
    Dernier message: 29/10/2004, 11h08
  4. Réponses: 2
    Dernier message: 09/10/2004, 11h35
  5. Programme fonctionnant sur Eclipse mais pas avec le jar?
    Par kirik dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/02/2004, 13h43

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