|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Bonjour,
je souhaite faire la requête suivante : Code :
Je sais que, vu que j'utilise un COUNT() dans le select, je dois faire un group by sur tous les autres champs demandés, MAIS si je fais ça, j'ai une erreur comme quoi PostGreSQL ne sait pas comparer mes champs UDT. De plus, je n'ai jamais utilisé ce type de jointures et s'il y a une erreur dedans, pourriez vous me la signaler ? Comment résoudre cela ? Un énorme merci si vous réussissez à m'aider Olivier |
||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Voici l'erreur précise renvoyée. Cela pourra éventuellement aider à résoudre mon problème :
Citation:
|
|
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Bonjour,
Pour faire un tri, pg a besoin de pouvoir comparer les valeurs, or pour un type composé ( ou crée ), il ne sait pas comment comparer, donc la 1ere chose a faire est de lui indiquer que faire quand il doit faire des opérations simples comme > >= = < <= ( CREATE OPERATOR ), cependant, un create operator necessite une fonction de comparaison, qui renvoie TRUE ou FALSE. Apres il faut lui definir une classe d'opérateur normalement de type btree (pour l'order by) et normalement ca devrait fonctionner, En gros pour resumé CREATE TYPE typetoto AS (a int2, b int2); CREATE OR REPLACE FUNCTION ftypetoto_pluspetit(typetoto,typetoto) RETURNS bool AS $body$ SELECT (($1).a<($2).a) AND (($1).b<($2).b) $body$ LANGUAGE 'SQL'; CREATE OPERATOR <( PROCEDURE = ftypetoto_pluspetit, LEFTARG = typetoto, RIGHTARG = typetoto); CREATE OPERATOR CLASS typetoto_ops DEFAULT FOR TYPE typetoto USING btree AS OPERATOR 1 < A completer donc avec les autres opérateurs.... Je n'ai pas testé, mais sur le principe ca doit etre bon. J'espere que ca ira. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mai 2004 Messages : 1 253 ![]() |
Merci beaucoup pour l'aide apportée.
Je passe le sujet en résolu. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com