SQL Alias

Résolu
Bonjour,

je requete sous SQL SERVER, en ODBC sur ingres.

Voici ma requete : select code, case when code2<>code3 then 0 else 1 end as champs from code

where champs=0

Ne fonctionne pas, en faite, je compare donc deux colonnes de ma table avec le case (qui fonctionne) je mets un alias champs à cette colonne mais après je veux voir que ceux dont la valeur de champs est égale à 0.

Comment faire ?

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Je ne suis pas sûr (mais à confirmer) que l'on puisse utiliser l'alias directement dans la requête.

    Sur MySQL avec une requête simple, ça ne marche pas :

    mysql> select * from t5;
    +----+--------+
    | c1 | c2     |
    +----+--------+
    |  1 | test 1 |
    |  2 | test 2 |
    |  3 | test 3 |
    |  4 | test 4 |
    +----+--------+
    4 rows in set (0.00 sec)
    
    mysql> select c1 as id, c2 as libelle from t5;
    +----+---------+
    | id | libelle |
    +----+---------+
    |  1 | test 1  |
    |  2 | test 2  |
    |  3 | test 3  |
    |  4 | test 4  |
    +----+---------+
    4 rows in set (0.00 sec)
    
    mysql> select c1 as id, c2 as libelle from t5 where id=4;
    ERROR 1054 (42S22): Unknown column 'id' in 'where clause'
    mysql>


    A voir si dans ton environnement c'est censé marcher ou pas...

    Sinon, tu peux peut-être mettre en variable le contenu du retour de ton case, pour le réutiliser ensuite.

    1. J'ai la même erreur...
      1. Contributeur
        Donc c'est que l'utilisation de l'alias ne doit pas être possible de cette façon.

        Essaye du côté des variables pour réutiliser le résultat dans la requête suivante.
      2. Ok merci j'ai trouvé !!
      3. Contributeur
        Et c'était quoi ? Histoire que ça puisse servir à quelqu'un d'autre...