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 :

[SQL2K][TSQL] Peut-on utiliser un alias dans une clause Where ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut [SQL2K][TSQL] Peut-on utiliser un alias dans une clause Where ?
    Bonjour,

    je suis actuellement en train de migrer un utilitaire (fichier Excel + macro), utilisé avec Sybase, pour une utilisation avec SQL Server 2000. Les requêtes sont en dur et je suis confronté à un petit problème syntaxique pour lequel je n'ai pas trouvé de réponse.

    J'ai par exemple une requête de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select chp1, chp2, (Select ....) As MonAlias
    From Table1
    Where MonAlias is null
    Le problème c'est qu'on ne peut pas utiliser MonAlias dans la clause Where, en tout cas je n'ai rien trouvé me prouvant le contraire.

    Si je recopie directement la sous-requête dans la clause where aucun problème, malheureusement les sous-requêtes ne sont pas petites et les mettre deux fois

    Bref, existe-t-il une autre solution ?

  2. #2
    Membre expérimenté Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Par défaut
    Salut,

    Si ta sous-requête ne renvois qu'un élément à la fois, pourquoi ne pas passé par une variable locale ?
    Sinon, je n'ai pas d'idée, à moins d'utiliser un curseur avec une variable locale...
    Enfin, c'est une piste possible!

    Cordialement,

    Florent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Par défaut
    Citation Envoyé par StormimOn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select chp1, chp2, (Select ....) As MonAlias
    From Table1
    Where 'MonAlias' is null
    Essaye avec ton alias entre ''

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    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 : 21 997
    Billets dans le blog
    6
    Par défaut
    Il ne faut pas confondre Alias et surnomage :

    Un alias concerne une table et peut être reprise dans les clauses FROM, WHERE, SELECT, GROUP BY, HAVING et ORDER BY.

    Un surnommage concerne une colonne (ou une expression) figurant uniquement dans la clause SELECT de l'ordre SELECT, et sert à l'affichage. Ce surnom peu être repris uniquement dans la clause ORDER BY car elle agit après que la requête ait été exécutée.

    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/ * * * * *

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par SQLpro
    Il ne faut pas confondre Alias et surnomage :

    Un alias concerne une table et peut être reprise dans les clauses FROM, WHERE, SELECT, GROUP BY, HAVING et ORDER BY.

    Un surnommage concerne une colonne (ou une expression) figurant uniquement dans la clause SELECT de l'ordre SELECT, et sert à l'affichage. Ce surnom peu être repris uniquement dans la clause ORDER BY car elle agit après que la requête ait été exécutée.

    A +
    Merci pour la terminologie et la réponse

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

Discussions similaires

  1. Utilisation des alias dans la clause WHERE d'une requête SELECT
    Par OursRêveur dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 13/07/2013, 04h34
  2. Utilisation des index (dans une clause WHERE)
    Par Jean-Jacques Engels dans le forum Langage SQL
    Réponses: 12
    Dernier message: 01/02/2012, 11h15
  3. Utiliser un alias de colonne dans une clause Where MS SQL
    Par sir dragorn dans le forum Langage SQL
    Réponses: 11
    Dernier message: 12/10/2011, 09h31
  4. [Oracle 9.2]Utiliser un alias dans une contrainte ?
    Par belfaigore dans le forum Oracle
    Réponses: 5
    Dernier message: 29/06/2005, 14h18
  5. Réponses: 15
    Dernier message: 22/03/2005, 14h45

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