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

Langage SQL Discussion :

Inclure une Condition dans un "Where"


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 29
    Par défaut Inclure une Condition dans un "Where"
    Bonjour à tous,

    Je cherche depuis maintenant quelques jours comment optimiser le code d'une requête.

    En fait, cette procédure stockée reçoit des paramètres d'entrée et en fonction d'un d'entre eux, une condition dans un where doit être retiré de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT distinct v.IdIlot,v.IDMachine    
        INTO #FR_AD_iIlots
        FROM dbo.verres_rebutes_operation v
            INNER JOIN #FR_AD_substrat sub
            ON v.CodeSubstat = sub.substrat
            INNER JOIN #FR_AD_surf surf
            ON v.CodeProcedeVerre = surf.surf
            INNER JOIN #FR_AD_cellule c
            ON v.Id_Cellule = c.cellule
        WHERE v.CrenduMission = '004'
            AND v.FlagProximity = @proximity
            AND v.CodeRebut = @rebutChoisi
            AND v.datefin BETWEEN @dated AND @datef
    Cette ligne en rouge, en fonction de la valeur de @proximity,est conditionnel.
    Je comptais mettre en If dedans mais ça ne marche pas : je reçois une erreur disant qu'il existe déjà une table #FR_AD_iIlots.

    Pour l'instant, la seule solution que j'ai trouvé est de faire un double de toute la requête (ce que je montre n'est qu'un bout de la qry) avec d'autres noms de tables temporaires ...

    Est-ce que vous auriez une idée pour améliorer cela ?

    Merci d'avance

  2. #2
    Membre confirmé Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 137
    Par défaut
    Bonjour,

    La solution est d'utiliser l'algèbre de Boole.
    Tout est très bien expliqué dans ce site par exemple : http://weblogs.sqlteam.com/jeffs/arc...11/14/513.aspx

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par the dude Voir le message
    (...) je reçois une erreur disant qu'il existe déjà une table #FR_AD_iIlots.
    Comme l'indique précisément le message d'erreur, il est impossible de créer deux tables portant le même nom.
    Et ce même pour des tables temporaires.
    Il faut exécuter un drop table #FR_AD_iIlots entre chaque test.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour
    Une solution serait de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND v.FlagProximity = @proximity
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (@proximity is null or v.FlagProximity = @proximity)
    Il y en a surement d'autres.
    Cordialement
    Soazig

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 29
    Par défaut
    merci beaucoup pour toutes ces réponses !!
    Effectivement en suivant le lien de Avatar, j'ai pu alléger mon code : merci !!

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

Discussions similaires

  1. Inclure une condition dans un define
    Par webshaker dans le forum Débuter
    Réponses: 9
    Dernier message: 03/04/2015, 15h12
  2. Mettre une condition dans la partie ON(jointure) ou where?
    Par messi1987 dans le forum Développement
    Réponses: 3
    Dernier message: 23/03/2015, 10h07
  3. Une condition dans le where
    Par logiciel_const dans le forum SQL
    Réponses: 2
    Dernier message: 31/01/2011, 18h47

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