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 WHERE IN qui passe de 2 � 3 choix [2017]


Sujet :

D�veloppement SQL Server

  1. #1
    Membre �clair�

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    285
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 285
    Par d�faut Condition WHERE IN qui passe de 2 � 3 choix
    Bonjour,

    J'ai une clause WHERE qui filtrait sur un Id. dans ces Idi on veut soit ceux qui ont la valeur 4, ou alors ceux qui ont la valeur 3 et 4
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    DECLARE  @Choix AS INT = 3 -- soit 3 ou 4 on veut soit les éléments avec Id= ou tous les éléments Id=3 et Id=4
     
    .....WHERE Id IN (@Choix, 4)
    Donc si on veux que les Id=4, @choix=4 -> 4 IN (4,4) On r�cup�re que les Id=4.
    sinon @choix=3 -> 3 ou 4 IN (3 , 4) et on r�cup�re les Id= 3 et Id=4.

    Ma demande est comment modifier la clause Where si on demande une 3�me option.
    La demande est parfois on veut seulement les Id = 1.

    Je vois pas comment modifier rapidement pour ajouter ce choix.


    Merci d'avance

  2. #2
    Membre chevronn� Avatar de Aa�����Aa�����Aa����
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    553
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 553
    Par d�faut
    Utilisez une variable table et modifiez les donn�es qui sont mises dedans suivant le besoin :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    DECLARE @bb TABLE ( nombre int NOT NULL )
    INSERT INTO @bb ( nombre ) VALUES ( 1 ) ; INSERT INTO @bb ( nombre ) VALUES ( 3 ) ; INSERT INTO @bb ( nombre ) VALUES ( 4 )
     
    SELECT MT.*
    FROM dbo.Matable as MT
    INNER JOIN @bb as BB
    	ON MT.id = BB.nombre
    Code �crit vite fait pour l'exemple et non test�

  3. #3
    Membre �clair�

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    285
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 285
    Par d�faut
    Bonjour,

    Merci beaucoup de la r�activit�. mais les premi�res demandes restent.
    Donc on prend les Id :
    - 3 et 4.
    - 4 seulement
    - 1 seulement.


    Avec la variable de table. Je g�re comment le cas 1 ou je veux les id 3 et 4 ?

  4. #4
    Membre chevronn� Avatar de Aa�����Aa�����Aa����
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    553
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activit� : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 553
    Par d�faut
    Citation Envoy� par t-die Voir le message
    Avec la variable de table. Je g�re comment le cas 1 ou je veux les id 3 et 4 ?
    Tu g�res le contenu de la table temporaire comme une table normale et tu adapte les insert en cons�quence suivant le cas

  5. #5
    R�dacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de donn�es / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 002
    Billets dans le blog
    6
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    DECLARE  @Choix AS VARCHAR(1000) = '3, 4, 7, 11'
     
     
    .....WHERE MaColonne IN (SELECT CAST(value AS INT)
                             FROM   STRING_SPLIT(@Choix, ','))
    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/ * * * * *

  6. #6
    Mod�rateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 47
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par d�faut
    Essayez ainsi :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    declare @choix AS INT=3;
     
    select t1.Id, Val
      from (values(1, 'A'),(2, 'B'),(3, 'C'),(4, 'D')) as t1 (Id, Val) -- Ici votre vraie table
      join (values(1, 1), (3, 3), (3, 4), (4, 4))      as t2 (Choix, Id) on t2.Id = t1.Id
     where t2.Choix = @choix;

  7. #7
    Membre �clair�

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    285
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 285
    Par d�faut
    Citation Envoy� par SQLpro Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    DECLARE  @Choix AS VARCHAR(1000) = '3, 4, 7, 11'D
     
     
    .....WHERE MaColonne IN (SELECT CAST(value AS INT)
                             FROM   STRING_SPLIT(@Choix, ','))
    A +
    Super merci de base j'utilise cette m�thode pour un choix de district en fonction de leur Id.

    Ce qui m'a perturb�, c'est que la SP est utilis� pour un dataset dans un Rapport sous ReportingServices et je peux pas utilis� une liste � choix multiple mais une liste d�roulante � choix unique.
    Mais en fait j'ai qu'a faire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    If @choix= 1 THEN
    @Choix2 = '1'
    If @choix= 3 THEN
    @Choix2 = '3,4'
    If @choix= 3 THEN
    @Choix2 = '4'
    Avec le SET variable bien s�r

    Merci beaucoup

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [PHP 5.4] sql condition WHERE ne passe pas
    Par laurentbatch dans le forum Langage
    R�ponses: 3
    Dernier message: 25/08/2013, 19h11
  2. [AC-2007] Condition WHERE en SQL qui me retourne une liste vide
    Par Rodrigue dans le forum Requ�tes et SQL.
    R�ponses: 3
    Dernier message: 21/11/2010, 15h28
  3. [MySQL] Condition where qui me pose probl�me
    Par Ikaly dans le forum PHP & Base de donn�es
    R�ponses: 6
    Dernier message: 27/05/2010, 10h09
  4. Condition OU qui passe comme un ET
    Par kykyn dans le forum Langage
    R�ponses: 10
    Dernier message: 17/08/2008, 17h58
  5. Programme de boot qui passe la main � Windows
    Par Bob dans le forum Assembleur
    R�ponses: 7
    Dernier message: 25/11/2002, 03h08

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