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 :

Utilisation des alias dans la clause WHERE d'une requête SELECT


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut Utilisation des alias dans la clause WHERE d'une requête SELECT
    Bonjour,

    Je ne suis pas une flèche en SQL et j'ai besoin d'un coup de pouce pour le problème suivant:

    J'ai une requête SELECT de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ...maTable1.maDonnée1 AS monAlias... FROM maTablePrincipale WHERE ...monAlias LIKE '%TexteRecherché%'...
    Malheureusement la requête n'est pas valide car dans la clause WHERE le champ monAlias n'est pas reconnu (SQL Server renvoi une erreur Invalid column name 'monAlias').

    Bien sûr, si je remplace monAlias par maTable1.maDonnée1 dans la clause, cela fonctionne. Le problème c'est que la requête est générée dynamiquement et qu'au moment de la génération du WHERE je n'ai connaissance que du paramètre monAlias, pas de maTable1.maDonnée1.

    Y a t'il un moyen d'utiliser les alias dans cette clause, ce qui m'éviterais de faire une analyse syntaxique de ma propre requête pour effectuer manuellement les remplacements de chaînes car ce traitement serait coûteux en performance et je préfèrerais l'éviter.

    Pour info j'utilise SQL Serveur 2005.

    Merci de m'avoir lu.

  2. #2
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    C bizarre, en effet, as-tu essayé d'enlever le AS !! Moi je ne le mettais pas sous SQLPlus

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    Ça ne change rien (en fait l'analyseur syntaxique de SQL Serveur remet automatiquement une forme maTable1.maDonnée1 monAlias en maTable1.maDonnée1 AS monAlias)

    En passant le problème ne se pose que dans la clause WHERE (pas dans le ORDER BY), j'ai donc corrigé le post en conséquence.

  4. #4
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Est-ce que maTable1.maDonnée1 est un champ texte ? Pour l'utilisation du like !!

  5. #5
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    Oui oui, le problème ne vient pas du LIKE, n'importe quel autre opérateur produit la même erreur.

    Le problème vient de monAlias qui n'est reconnu nulle part dans la clause WHERE.

  6. #6
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Non mais je te demandais cela car, si ce n'était pas un champ texte le like ne marcherais pas !! Mais bon dans ce cas ...
    Est-tu sur de pouvoir utiliser les alias avec SQL Serveur 2005 ?

    Moi j'utilise SQLPlus, ou Oracle et cela fonctionne mais la je t'avoue que je ne sais pas

Discussions similaires

  1. [Oracle] utilisation des alias dans le where
    Par seddik_saber dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/09/2007, 11h18
  2. Réponses: 2
    Dernier message: 29/01/2007, 13h41
  3. Réponses: 3
    Dernier message: 18/09/2006, 20h55
  4. Réponses: 4
    Dernier message: 10/05/2006, 18h40
  5. Ordre des tests dans la clause WHERE
    Par Tans98 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/09/2004, 10h52

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