Rechercher : dans
Par :

[Oracle] Utiliser les alias dans une requete

Dernière réponse le 11 mar 2009 à 16:00:17 titi41, le 23 mai 2008 à 10:24:06 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [Oracle] Utiliser les alias dans une requete » dans :
SQL - Sous-requêtes Voir Expression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...
Oracle - Les requêtes hiérarchiques Voir Cet article se base sur des tests et recherches réalisés dans la version 8.1.5 d'Oracle. Introduction Tout au long de cet article, nous allons nous intéresser à une structure de données permettant de créer un Forum de discussion, matérialisé par...
Guide d'utilisation du Shell pour débutant VoirSHELL BASH - GUIDE D'UTILISATION - Niveau Débutant Introduction Appel aux membres CCM II. C'est quoi le shell ? III. Comment accéder à la ligne de commande IV. Les consoles virtuelles Exemple : Accéder à la console 3 depuis l'interface...
Oracle - La gestion de la mémoire VoirL'utilisation de la mémoire par Oracle. Oracle fait un usage poussé de la mémoire physique (RAM, Random Access Memory) du serveur afin de fournir les meilleures performances possibles. Ainsi Oracle utilise la mémoire physique du serveur...
SQL - Création d'index VoirQu'est-ce qu'un index? Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer" certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre ne...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...

1

=[Cvrd]=Tassin, le 23 mai 2008 à 11:26:41

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. -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin

2

titi41, le 23 mai 2008 à 11:53:21

J'ai ne peux pas créer un champs et l'utiliser dans une requete ?

Répondre à titi41

3

=[Cvrd]=Tassin, le 23 mai 2008 à 11:55:57

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. -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin

4

titi41, le 23 mai 2008 à 12:20:36

Tu peux très bien utiliser des champs "calculate" que tu crées toi même (par exemple une somme, une moyenne,...)

Répondre à titi41

5

=[Cvrd]=Tassin, le 28 mai 2008 à 13:40:34

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. -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin

6

titi41, le 28 mai 2008 à 13:46:11

Je demande si il est possible de faire ce que je veux. Si ce n'est pas le cas, dis le directement

Répondre à titi41

8

boyster, le 27 fév 2009 à 12:20:39
  • +1

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.

Répondre à boyster

9

 Fran, le 11 mar 2009 à 16:00:17

Si, merci, cela m'a aidé pour un problème du meme type. C'est bien les exemples
Encore merci!

Répondre à Fran

7

=[Cvrd]=Tassin, le 28 mai 2008 à 13:48:12

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 ... -- Alex pour vous servir --

-- N'oubliez pas de mettre vos sujets en "Résolu" lorsque vous avez la réponse ;-) --

Répondre à =[Cvrd]=Tassin
Collection CommentÇaMarche.net