[Oracle] Utiliser les alias dans une requete

Fermé
titi41 Messages postés 73 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 22 juin 2010 - 23 mai 2008 à 10:24
 Kaori - 27 nov. 2011 à 03:22
Bonjour,

J'ai créé une colonne et je l'ai donc appelé par un alias dans ma requete.
J'aimerai l'utiliser dans la clause where.
Comme il vaut mieux un exemple, voilà ma requete

select country_id, country_name, '*' as field from countries where field = '*'

Et j'obtiens l'erreur
Error starting at line 1 in command:
select country_id, country_name, '*' as field from countries where field = '*'
Error at Command Line:1 Column:67
Error report:
SQL Error: ORA-00904: "FIELD": invalid identifier
00904. 00000 - "%s: invalid identifier"

Ce qui est assez logique. Je sais que ma requete ne sert à rien, mais c'est pour savoir comme utiliser les alias, j'en aurai besoin avec SharePoint.

Merci

Cdl,
Titi41

5 réponses

titi41 Messages postés 73 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 22 juin 2010 3
28 mai 2008 à 13:46
Je demande si il est possible de faire ce que je veux. Si ce n'est pas le cas, dis le directement
3
Bon la demande date, mais histoire de fournir une solution...
Ce que tu demandes est possible si tu utilises le mécanisme des requêtes imbriquées.
...ça va demander un peu d'analyse :/

Situation
On dispose de la table t1 dont la structure est la suivante : t1[c1, c2, ...]
la table est alimentée ainsi : pour chacune des valeurs distinctes présentes dans la colonne c2, peuvent être associées plusieurs valeurs différentes dans la colonne c1.

Problématique
On cherche a distinguer quelles sont les valeurs de la colonne c2 qui possèdent plus d'une valeur associée dans la la colonne c1.

Procédé
On va dans un premier temps constituer la liste des différentes valeurs possible dans la colonne c2. On donne a ces valeurs l'allias suivant a1.
SELECT DISTINCT(c2) AS a1 FROM t1

Puis on va comptabiliser, par le biais de l'allias nb, combien il existe d'association entre les colonnes c1 et c2, pour chacune des valeurs existantes dans la colonne c2, identifié par l'allias a2, pour la suite de la requête.
SELECT c2 AS a2, COUNT(*) AS nb FROM t1, (SELECT DISTINCT(c2) AS a1 FROM t1)
WHERE c2 = a1
GROUP BY c2

Enfin on identifie les lignes de la table pour lesquelles les valeurs de la colonnes c2 sont égales aux valeurs de l'allias a2, et dont le nombre d'association avec la colonne c1, identifié par l'allias nb, est supérieur à 1.
SELECT * FROM t1,(
SELECT c2 AS a2, COUNT(*) AS nb FROM t1, (SELECT DISTINCT(c2) AS a1 FROM t1)
WHERE c2 = a1
GROUP BY c2
) 
WHERE c2 = a2
AND nb > 1
ORDER BY c2 

...espérant avoir été assez clair !
Cdt.
0
Fran > boyster
11 mars 2009 à 16:00
Si, merci, cela m'a aidé pour un problème du meme type. C'est bien les exemples
Encore merci!
0
Merci boyster =) ça m'a aidé aussi ^^
0
Utilisateur anonyme
28 mai 2008 à 13:48
J'ai créé une colonne et je l'ai donc appelé par un alias dans ma requete.
J'aimerai l'utiliser dans la clause where.
--> La réponse est non et la prochaine fois tâche d'être un peu plus sympathique dans tes réponses ...
2
Utilisateur anonyme
23 mai 2008 à 11:55
Comment ça créer un champs ????

Tu as une table avec des champs à l'intérieur et une requête SQL de type "SELECT ..." permet d'interroger la table et de récupérer certains champs mais pas d'en créer.
1
titi41 Messages postés 73 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 22 juin 2010 3
23 mai 2008 à 12:20
Tu peux très bien utiliser des champs "calculate" que tu crées toi même (par exemple une somme, une moyenne,...)
0
Utilisateur anonyme
28 mai 2008 à 13:40
Ce ne sont pas des champs créer en base (elles n'apparaissent pas dans ta table) ce sont des champs calculés à partir de tes champs de ta table.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
23 mai 2008 à 11:26
La bonne syntaxe est la suivante :
select country_id, country_name AS COUNTRY from countries where country_name = '*'
Tu ne dois pas mettre le nom de l'alias dans ta clause Where mais uniquement le nom des colonnes telles qu'elles ont été définies dans la base.
0
titi41 Messages postés 73 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 22 juin 2010 3
23 mai 2008 à 11:53
J'ai ne peux pas créer un champs et l'utiliser dans une requete ?
0