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 :

Conditions OR multiples


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut Conditions OR multiples
    Bonjour,

    J'ai une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Select ...
    From ...
    where IdArticle = X1 and IdFournisseur = Y1
    Or IdArticle = X2 and IdFournisseur = Y2
    Or IdArticle = X3 and IdFournisseur = Y3
    Or IdArticle = X4 and IdFournisseur = Y4
    Or IdArticle = X5 and IdFournisseur = Y5
    ...
    Or IdArticle = Xx and IdFournisseur = Yy
    Y-a-t-il moyen de faire plus court et plus efficace ?

    Merci.
    [Access] Les bases du débogage => ici

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    D'ou viennent X1, Y1,X2,Y2,...

    est-ce des valeurs en dur(donc a mettre en simple quotes...)
    ou est-ce qu'elles proviennent d'autres tables ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    S'il s'agit de valeurs en dur, vous pouvez faire comme ceci a partir de la version 2008 qui prend en charge les constructeurs de lignes valuées

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT ...
    FROM MaTable
    INNER JOIN (VALUES
    	('X1', 'Y1'),
    	('X2', 'Y2'),
    	('X3', 'Y3'),
    	('X4', 'Y4'),
    	...
    	('Xx', 'Yy')
    ) AS tmp(IdArticle, IdFournisseur)
    ON MaTable.IDArticle = tmp.IDArticle 
    AND MaTable.IdFournisseur = tmp.IdFournisseur

    et comme cela pour les versions anterieures
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT ...
    FROM MaTable
    INNER JOIN (
    	SELECT 'X1', 'Y1' UNION ALL
    	SELECT 'X2', 'Y2' UNION ALL
    	SELECT 'X3', 'Y3' UNION ALL
    	SELECT 'X4', 'Y4' UNION ALL
    	...
    	SELECT 'Xx', 'Yy'
    ) AS tmp(IdArticle, IdFournisseur)
    ON MaTable.IDArticle = tmp.IDArticle 
    AND MaTable.IdFournisseur = tmp.IdFournisseur

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut
    X1, ... , Yn, c'est des Id entiers, "en dur".

    J'avais pas pensé à ces 2 possibilités.

    Merci.
    [Access] Les bases du débogage => ici

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    ou avec les CTE depuis 2005, mais qui revient au même (juste une différence d'écriture, peut être plus lisible...)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    WITH tmp(IdArticle, IdFournisseur) AS(
    	SELECT 'X1', 'Y1' UNION ALL
    	SELECT 'X2', 'Y2' UNION ALL
    	SELECT 'X3', 'Y3' UNION ALL
    	SELECT 'X4', 'Y4' UNION ALL
    	...
    	SELECT 'Xx', 'Yy'
    ) 
    SELECT ...
    FROM MaTable
    INNER JOIN tmp 
        ON MaTable.IDArticle = tmp.IDArticle 
        AND MaTable.IdFournisseur = tmp.IdFournisseur

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

Discussions similaires

  1. Problème avec une condition if multiple
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/03/2013, 16h30
  2. condition logiques & multiples
    Par sulliwane dans le forum MATLAB
    Réponses: 2
    Dernier message: 24/12/2009, 13h23
  3. condition if multiple
    Par davelop dans le forum ASP
    Réponses: 4
    Dernier message: 30/09/2009, 09h42
  4. condition "OR" multiple
    Par nicerico dans le forum MySQL
    Réponses: 2
    Dernier message: 19/03/2009, 16h43
  5. Condition If multiple
    Par M1000 dans le forum ASP
    Réponses: 2
    Dernier message: 01/03/2004, 13h46

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