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

Développement SQL Server Discussion :

Condition dans WHERE


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Morad ISSOULGHANE
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2009
    Messages : 98
    Par défaut Condition dans WHERE
    Bonjour,
    J'aimerais avoir une requette SQL qui prend un paramètre, mais lorsque ce paramètre est null je retourne l'ensemble de mes lignes.

    Ma requette SQL, doit retourner le contenu suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM MaVue WHERE Id =@Id (Si @Id IS NOT NULL)
    SELECT * FROM MaVue (Si @Id IS NULL)
    Merci

  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
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM MaVue 
    WHERE Id = @Id 
     OR @Id IS NULL
    ++

  3. #3
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM MaVue 
    WHERE 
    Id = COALESCE(@Id, id)
    Non ?

  4. #4
    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
    COALESCE ne fonctionnera pas si jamais il existe une absence de valeur dans la colonne Id et que le paramètre @ID est également NULL

    Par exemple :

    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
    DECLARE @ID INT
    SET @ID = NULL
     
    DECLARE @t TABLE
    (
     Id INT,
     texte VARCHAR(10)
    );
     
    INSERT INTO @t VALUES (1, 'TEST1');
    INSERT INTO @t VALUES (2, 'TEST2');
    INSERT INTO @t VALUES (3, 'TEST3');
    INSERT INTO @t VALUES (4, 'TEST4');
    INSERT INTO @t VALUES (NULL, 'TEST5');
     
    SELECT * 
    FROM @t
    WHERE 
    Id = COALESCE(@Id, Id)
     
    SELECT * 
    FROM @t
    WHERE 
    Id = @Id
     OR @Id IS NULL
    ++

  5. #5
    Membre éclairé Avatar de SetaSensei
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Par défaut
    Effectivement, je n'avais jamais encore eu ce cas à traiter.

    Merci pour la précision.

  6. #6
    Membre confirmé Avatar de Morad ISSOULGHANE
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2009
    Messages : 98
    Par défaut
    Merci ts le monde pour la réponse

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/06/2013, 07h24
  2. Condition dans Where contenant un slash
    Par paradeofphp dans le forum Requêtes
    Réponses: 6
    Dernier message: 29/04/2010, 19h28
  3. Aide rédaction des conditions dans where clause
    Par Pahcixam dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/08/2007, 13h01
  4. Nombre de condition dans WHERE
    Par freud dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/07/2007, 12h14
  5. Condition dans WHERE
    Par portu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/02/2007, 11h31

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