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

Langage SQL Discussion :

Problème requete SQL


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Points : 16
    Points
    16
    Par défaut [Résolu] Problème requete SQL
    Bonjour,

    Je travaille sous SQL*Plus 3.3 (Oracle 8i).

    Soit la table Achats:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SQL> DESCRIBE Achats;
     Nom                  Non renseigné NULL? Type
     ------------------------------- -------- ----
     NB                              NOT NULL NUMBER(3)
     NV                              NOT NULL NUMBER(3)
     DAT                             NOT NULL DATE
     LIEU                                     VARCHAR2(25)
     QTE                                      NUMBER(4)
    Je voudrais écrire une requete qui donne pour le vin numéro 12, la quantité achetée par année à Paris. Voici ce que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> SELECT to_number(to_char(dat, 'YYYY')) AS Annee, SUM(qte) AS Conso
      2  FROM Achats
      3  WHERE nv = 12
      4  AND lieu = 'Paris'
      5  GROUP BY Annee
      6  ORDER BY Conso DESC;
    GROUP BY Annee
             *
    ERREUR à la ligne 5:
    ORA-00904: Nom de colonne non valide
    Pourquoi j'obtiens un message d'erreur ?

    J'ai essayé de faire la requete en passant d'abord par une vue qui extrait l'année et la quantité, sans faire la somme, mais j'aimerais beaucoup pouvoir obtenir le résultant avec une seule requete, pour l'utiliser ensuite comme curseur en PL/SQL.

    Merci de m'aider,
    Tony

  2. #2
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 171
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    C'est normal, il y a 2 fois GROUP BY :
    - une fois à la ligne 5
    - et une autre fois à la ligne 7

  3. #3
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Bonsoir,

    C'est parce que dans les clauses Group By et Order By on ne peut pas utiliser les alias qu'on a défini pour les colonnes.

    Une solution est de faire une requête "imbriquée" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT  Annee, Conso
    from
      (
        SELECT  to_number(to_char(dat, 'YYYY')) AS Annee, SUM(qte) AS Conso 
        FROM    Achats 
        WHERE   nv = 12 
          AND   lieu = 'Paris' 
      )
    GROUP BY Annee 
    ORDER BY Conso DESC;
    Une autre solution est de se passer des alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  to_number(to_char(dat, 'YYYY')) AS Annee, SUM(qte) AS Conso 
    FROM    Achats 
    WHERE   nv = 12 
      AND   lieu = 'Paris' 
    GROUP BY to_number(to_char(dat, 'YYYY')) 
    ORDER BY 2 DESC;
    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    Merci Laly !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant] Problème requete SQL et driver JDBC
    Par desquesa dans le forum JDBC
    Réponses: 2
    Dernier message: 29/05/2006, 13h19
  2. [MySQL] Problème requete SQL dans PHP
    Par dl_jarod dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/04/2006, 14h40
  3. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15
  4. problème requete sql
    Par Fred- dans le forum ASP
    Réponses: 2
    Dernier message: 13/06/2004, 02h20
  5. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31

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