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

PostgreSQL Discussion :

ERROR: could not identify an ordering operator for type record


Sujet :

PostgreSQL

  1. #1
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut ERROR: could not identify an ordering operator for type record
    Bonjour à tous,

    J'ai du récemment porter une appli d'Oracle 10g vers PostgreSQL 8.2.4 sur du windows XP.

    Voici l'erruer que j'obtiens en exécutant certaines requêtes :
    ERROR: could not identify an ordering operator for type record
    État SQL :42883
    Astuce : Use an explicit ordering operator or modify the query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    select * from
      (select sum(CA) as CA ,sum(Marge) as Marge, avg(N) as N, sum(CA2) as CA2 ,sum(Marge2) as Marge2 , avg(N2) as N2, c.CLI_NOMCLIENT 
      from
        (select sum(BUD_CARVALEUR) as CA ,sum(BUD_MAVALEUR) as Marge ,PER_NUMANNEE as N,CLI_IDCLIENT 
          from IND_BUDGET,CLIENT,PERIODE,SITE,AGENCE 
          where BUD_IDPERIODE=PER_IDPERIODE and BUD_IDCLIENT=CLI_IDCLIENT and PER_NUMANNEE=2007 
            and BUD_IDSITE=SIT_IDSITE and SIT_IDAGE=AGE_IDAGE and AGE_LIBAGENCE like 'Aqui'
          group by (PER_NUMANNEE,CLI_IDCLIENT) order by CA desc) r left outer join
        (select sum(BUD_CARVALEUR) as CA2 ,sum(BUD_MAVALEUR) as Marge2 ,PER_NUMANNEE as N2 ,CLI_IDCLIENT 
          from IND_BUDGET,CLIENT,PERIODE,SITE,AGENCE 
          where BUD_IDPERIODE=PER_IDPERIODE and BUD_IDCLIENT=CLI_IDCLIENT and PER_NUMANNEE=2007-1 
            and BUD_IDSITE=SIT_IDSITE and SIT_IDAGE=AGE_IDAGE and AGE_LIBAGENCE like 'Aqui'
          group by (PER_NUMANNEE,CLI_IDCLIENT)) r2 on r.CLI_IDCLIENT=r2.CLI_IDCLIENT
        inner join CLIENT c on r.CLI_IDCLIENT=c.CLI_IDCLIENT
          group by (CLI_NOMCLIENT) order by CA desc
      )q
    where rownum <= 10
    Savez vous comment se corrige le problème ?

    Cordialement

  2. #2
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Bonjour,

    en fait, tu as mis tes order by entre parentheses, pg pense donc qu'il doit gere un record, mais il ne peux pas (ou il faut que creer les operators toi meme)
    enleve les parentheses

    sinon pour le where rownum <= 10, remplace pas limit 10

    SELECT * FROM
    (SELECT sum(CA) AS CA ,sum(Marge) AS Marge, avg(N) AS N, sum(CA2) AS CA2 ,sum(Marge2) AS Marge2 , avg(N2) AS N2, c.CLI_NOMCLIENT
    FROM
    (SELECT sum(BUD_CARVALEUR) AS CA ,sum(BUD_MAVALEUR) AS Marge ,PER_NUMANNEE AS N,CLI_IDCLIENT
    FROM IND_BUDGET,CLIENT,PERIODE,SITE,AGENCE
    WHERE BUD_IDPERIODE=PER_IDPERIODE AND BUD_IDCLIENT=CLI_IDCLIENT AND PER_NUMANNEE=2007
    AND BUD_IDSITE=SIT_IDSITE AND SIT_IDAGE=AGE_IDAGE AND AGE_LIBAGENCE LIKE 'Aqui'
    GROUP BY PER_NUMANNEE,CLI_IDCLIENT ORDER BY CA DESC) r LEFT OUTER JOIN
    (SELECT sum(BUD_CARVALEUR) AS CA2 ,sum(BUD_MAVALEUR) AS Marge2 ,PER_NUMANNEE AS N2 ,CLI_IDCLIENT
    FROM IND_BUDGET,CLIENT,PERIODE,SITE,AGENCE
    WHERE BUD_IDPERIODE=PER_IDPERIODE AND BUD_IDCLIENT=CLI_IDCLIENT AND PER_NUMANNEE=2007-1
    AND BUD_IDSITE=SIT_IDSITE AND SIT_IDAGE=AGE_IDAGE AND AGE_LIBAGENCE LIKE 'Aqui'
    GROUP BY PER_NUMANNEE,CLI_IDCLIENT) r2 ON r.CLI_IDCLIENT=r2.CLI_IDCLIENT
    INNER JOIN CLIENT c ON r.CLI_IDCLIENT=c.CLI_IDCLIENT
    GROUP BY CLI_NOMCLIENT ORDER BY CA DESC
    )q
    LIMIT 10

  3. #3
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    Tout simplement....

    Big Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/08/2012, 07h21
  2. Réponses: 0
    Dernier message: 28/03/2012, 11h31
  3. log4j:ERROR Could not find value for key log4j.appender
    Par quiquekoi dans le forum Logging
    Réponses: 0
    Dernier message: 28/07/2010, 09h26
  4. Réponses: 5
    Dernier message: 01/08/2007, 15h07
  5. [Continuum] Build Error : Could not find Maven project descriptor
    Par CharlSka dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 15/01/2007, 11h22

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