Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Error de operadores en postgres

Estas en el tema de Error de operadores en postgres en el foro de PostgreSQL en Foros del Web. Buenas tengo un error en posgrest me lanza este error hice varios cast para solucionar problemas parecidos pero en este caso no se que hacer, ...
  #1 (permalink)  
Antiguo 28/05/2012, 19:55
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 12 años
Puntos: 0
Error de operadores en postgres

Buenas tengo un error en posgrest me lanza este error hice varios cast para solucionar problemas parecidos pero en este caso no se que hacer, si alguien pudiera ayudarme se lo agradecería.

pg_query(): Query failed: ERROR: el operador no es unico: d_valor_numerico || unknown LINE 8: cast(p.valor_1||' '||m.simbolo as varchar) as valor1_comple... ^ HINT: No se pudo escoger el operador mas adecuado. Puede ser necesario agregar conversiones explicitas de tipos.
  #2 (permalink)  
Antiguo 29/05/2012, 07:50
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Error de operadores en postgres

Pero cual es la sentencia en la que se dispara este error?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 29/05/2012, 09:40
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 12 años
Puntos: 0
Respuesta: Error de operadores en postgres

Ok encontre donde se genera el error aqui te lo dejo:

Select
cast(p.valor_1 as varchar) as valor_1,
cast(p.valor_2 as varchar) as valor_2,
s.signo_vital,
s.descripcion as desc_signo,
m.medida,
m.simbolo as desc_medida,
cast(p.valor_1||' '||m.simbolo as varchar) as valor1_completo,
cast(p.valor_2||' '||m.simbolo as varchar) as valor2_completo
From
pre_cita p, signo_vital s, medida m
Where
p.signo_vital = s.signo_vital and s.medida = m.medida and p.cita = @cita@

Última edición por dave_river89; 29/05/2012 a las 19:58
  #4 (permalink)  
Antiguo 30/05/2012, 09:59
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Error de operadores en postgres

La forma como tratas de hacer cast, requiere de la creación del mismo.
Para que no te compliques, postgresql tiene una forma bastante sencilla de hacer casteos.

cast(p.valor_1 as varchar) as valor_1
es equivalente a
p.valor_1::varchar as valor_1

cast(p.valor_1||' '||m.simbolo as varchar) as valor1_completo
es equivalente a
(p.valor_1||' '||m.simbolo)::varchar as valor1_completo

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 31/05/2012, 07:23
 
Fecha de Ingreso: mayo-2012
Mensajes: 24
Antigüedad: 12 años
Puntos: 0
Respuesta: Error de operadores en postgres

Buenas, sabes me di cuenta que el archvio no estaba en ese archivo sino en otro archivo sql similar pero igual hice los cambios que me dijistes pero igual sigue el error

pg_query(): Query failed: ERROR: el operador no es �nico: d_valor_numerico || unknown LINE 8: (p.valor_1||' '||m.simbolo)::varchar as valor1_completo, ^ HINT: No se pudo escoger el operador m�s adecuado. Puede ser necesario agregar conversiones expl�citas de tipos.

Este es el archivo ya modificado, sera posible el error este en en el codigo php es que este trabajo es de una migración de php 5.2 a 5.3 y de postgres 8.2 a 9.1:

Select
p.valor_1::varchar as valor_1,
p.valor_2::varchar as valor_2,
s.signo_vital,
s.descripcion as desc_signo,
m.medida,
m.simbolo as desc_medida,
(p.valor_1||' '||m.simbolo)::varchar as valor1_completo,
(p.valor_2||''||m.simbolo):: varchar as valor2_completo,
(case when s.signo_vital = 1 then 'tool_img img_aceptar'
when s.signo_vital = 2 then 'tool_img img_asignar'
when s.signo_vital = 3 then 'tool_img img_eliminar' end) as imagen_sv,
(case
when s.cnt_valores = 1 then (cast(to_char(p.valor_1, s.formato)||' '||m.simbolo as varchar))
when s.cnt_valores = 2 then (cast(to_char(p.valor_1, s.formato)||cast(s.separador as varchar)||to_char(p.valor_2, s.formato)||' '||m.simbolo as varchar))
end) as valor_pr,
cast('' as varchar) as ruta_imagenes,
s.archivo_nombre


From
pre_cita p, signo_vital s, medida m
Where
s.es_clave = 1 and p.signo_vital = s.signo_vital and s.medida = m.medida and p.cita = @cita@
  #6 (permalink)  
Antiguo 31/05/2012, 08:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Error de operadores en postgres

Cita:
Select
p.valor_1::varchar as valor_1,
p.valor_2::varchar as valor_2,
s.signo_vital,
s.descripcion as desc_signo,
m.medida,
m.simbolo as desc_medida,
(p.valor_1||' '||m.simbolo)::varchar as valor1_completo,
(p.valor_2||''||m.simbolo):: varchar as valor2_completo,
(case when s.signo_vital = 1 then 'tool_img img_aceptar'
when s.signo_vital = 2 then 'tool_img img_asignar'
when s.signo_vital = 3 then 'tool_img img_eliminar' end) as imagen_sv,
(case
when s.cnt_valores = 1 then (cast(to_char(p.valor_1, s.formato)||' '||m.simbolo as varchar))
when s.cnt_valores = 2 then (cast(to_char(p.valor_1, s.formato)||cast(s.separador as varchar)||to_char(p.valor_2, s.formato)||' '||m.simbolo as varchar))
end) as valor_pr,
cast('' as varchar) as ruta_imagenes,

s.archivo_nombre
El error es definitivamente un problema de cast.
Corrige estas y nos cuentas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: failed, operadores, postgres, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.