Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/10/2007, 10h00   #1
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 817
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 817
Points : 1 091
Points : 1 091
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 :
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
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 10h17   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
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
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 10h56   #3
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 817
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 817
Points : 1 091
Points : 1 091
Tout simplement....

Big Merci
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web