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 :

select multi criteres


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut select multi criteres
    Bonjour,
    je voudrais faire un select selon un ou plusieurs criteres de recherche,
    ma requete ne comporte pas d'erreur mais ne fonctionne pas.
    l'utilisateur peut entrer un ou plusieurs criteres .
    Il faut tenir compte aussi que la valeur d'un champ peut etre a null
    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 PROCEDURE [dbo].[RD4SelectByParams]
    (
    	@p_RrnNr varchar(50),
    	@p_DateTakeBack datetime,
    	@p_DateTransfer datetime,
    	@p_DateExecutionTransfer datetime,
    	@p_CoidCountryTakeBack varchar(50),
    	@p_CoidBorder varchar(50),
    	@p_CoidArticleBelgium varchar(50),
    	@p_CoidArticleMemberState varchar(50)
    )
    AS
    	SET NOCOUNT ON;
    SELECT     IdRD4, RrnNr, DateTakeBack, CoidArticleMemberState, CoidArticleBelgium, DateTransfer, DateExecutionTransfer, CoidBorder, Eurodac, 
                          ChildrenUnder16, ChildrenOver16, Married, Commentary, Language, CoidTreatingAgent, CoidCountryTakeBack
    FROM         RD4
    WHERE (@p_RrnNr = '' OR RrnNr=@p_RrnNr )
    AND (@p_DateTakeBack is NULL OR DateTakeBack = @p_DateTakeBack OR DateTakeBack IS NULL)
    AND (@p_DateTransfer is NULL OR DateTransfer = @p_DateTransfer OR DateTransfer IS NULL) 
    AND (@p_DateExecutionTransfer is NULL OR DateExecutionTransfer = @p_DateExecutionTransfer OR DateExecutionTransfer IS NULL) 
    AND (@p_CoidCountryTakeBack = '' OR CoidCountryTakeBack = @p_CoidCountryTakeBack OR CoidCountryTakeBack IS NULL) 
    AND (@p_CoidBorder = '' OR CoidBorder = @p_CoidBorder OR CoidBorder IS NULL) 
    AND (@p_CoidArticleBelgium = '' OR CoidArticleBelgium = @p_CoidArticleBelgium OR CoidArticleBelgium IS NULL) 
    AND (@p_CoidArticleMemberState = '' OR CoidArticleMemberState = @p_CoidArticleMemberState )

  2. #2
    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 : 44
    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,

    Il n'y a pas de raisons à priori pour que votre requête ne fonctionne pas.

    Néanmoins :

    - Si vous nous donniez la structure de la table RD4 avec un jeu de données significatif, nous pourrions vous aider,

    - Je vous conseille d'utiliser du code SQL dynamique, c'est à dire de créer votre requête petit à petit suivant les valeurs de vos paramètres d'entrée, de la stocker dans un chaîne de type NVARCHAR, et de la soumettre à la procédure système sp_executeSQL. Vous y gagnerez en performance et en maintenabilité.

    @++

  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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    Par défaut
    Il serait plus juste de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (DateTakeBack = COALESCE(@p_DateTakeBack, DateTakeBack) OR (DateTakeBack  IS NULL AND DateTakeBack IS NULL)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut
    OK , j'ai touvé il suffisait d'inialiser mes parametres a null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @p_RrnNr varchar(50) = NULL,
    	@p_DateTakeBack datetime = NULL,
    	@p_DateTransfer datetime = NULL,
    	@p_DateExecutionTransfer datetime = NULL,
    	@p_CoidCountryTakeBack varchar(50)=  NULL,
    	@p_CoidBorder varchar(50) =NULL,
    	@p_CoidArticleBelgium varchar(50)= NULL,
    	@p_CoidArticleMemberState varchar(50) =NULL

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

Discussions similaires

  1. [AC-2000] Select group by multi criteres + légumes
    Par Clafoutis dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/06/2009, 15h12
  2. gui pour recherche multi critere
    Par komando dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/12/2005, 19h08
  3. select multi choix
    Par PAYASS59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/09/2005, 10h42
  4. selection multi choix
    Par PAYASS59 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/09/2005, 10h21
  5. Réponses: 14
    Dernier message: 15/06/2005, 13h14

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