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

SQL Oracle Discussion :

ORA-00904: "V"."DEPARTEMENT" : identificateur non valide


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 123
    Points : 47
    Points
    47
    Par défaut ORA-00904: "V"."DEPARTEMENT" : identificateur non valide
    Salut,
    j'ai une requête similaire à la requête suivante et d'ailleurs qui me retourne la même erreur :
    select v.nom
    from Ville v
    inner join (select AVG (vl.population) as moyenne,
    max (vl.departement) as departement
    from Ville vl
    where vl.departement = v.departement) pop_par_dpt
    on v.departement = pop_par_dpt.departement
    where v.population >= pop_par_dpt.moyenne ;
    l'erreur produite est celle que j'ai mis en commentaire :
    ORA-00904: "V"."DEPARTEMENT" : identificateur non valide
    je cherche la solution mais je l'ai pas encore trouvé, qu'en pensez vous ?
    Merci

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Tu mélanges les jointures et les requêtes corrélées, donc si j'ai bien compris le besoin
    avec jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select v.nom
      from Ville v
      join (select vl.departement, AVG (vl.population) as moyenne
              from Ville vl
             group by vl.departement
           ) pop_par_dpt
        on v.departement = pop_par_dpt.departement
     where v.population >= pop_par_dpt.moyenne
    avec requêtes corrélées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select v.nom
      from ville v
     where v.population >= (select avg(vl.population) 
                              from ville vl 
                             where vl.departement = v.departement)
    Il y a aussi une possibilité avec une fonction analytique et un seul accès à la table (mais sous-requête):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select nom 
      from (select nom, population, departement,
                   avg(population) over (partition by departement) as pop_dept
              from ville
           )
     where population >= pop_dept

Discussions similaires

  1. erreur ora-00904 identificateur non valide
    Par zed80 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2010, 13h23
  2. Ora-00904 Identificateur non valide ?
    Par DBA_OCP dans le forum Oracle
    Réponses: 1
    Dernier message: 05/06/2009, 16h03
  3. ORA-00904 : identificateur non valide
    Par hotcold dans le forum SQL
    Réponses: 10
    Dernier message: 01/03/2009, 19h20
  4. Réponses: 2
    Dernier message: 26/02/2008, 09h16
  5. Réponses: 5
    Dernier message: 13/08/2007, 13h02

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