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

POstGis // Error 42P01:UNDEFINED TABLE

Estas en el tema de POstGis // Error 42P01:UNDEFINED TABLE en el foro de PostgreSQL en Foros del Web. Buenas, tengo el siguiente problema: Pretendo crear la siguiente función que elimine aquellos registros de la primera tabla que "espacialmente" existan en la segunda tabla ...
  #1 (permalink)  
Antiguo 23/02/2011, 12:22
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
POstGis // Error 42P01:UNDEFINED TABLE

Buenas, tengo el siguiente problema:

Pretendo crear la siguiente función que elimine aquellos registros de la primera tabla que "espacialmente" existan en la segunda tabla (comparo sus columnas geométricas)

Código:
CREATE OR REPLACE FUNCTION srmdiferencia_espacial(text, text)
  RETURNS text AS
$BODY$
/*Elimina de $1 aquellas entidades que es coincidan espacialmente con $2*/
DECLARE
	ret text;

BEGIN
   ret='OK';
   EXECUTE 'DELETE from '||$1||' WHERE ST_Equals('||$1||'.geom,'||$2||'.geom) = ''true''';
RETURN ret;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE STRICT
  COST 100;
ALTER FUNCTION srmdiferencia_espacial(text, text) OWNER TO postgres;
El caso es que me salta el siguiente error:

ERROR: falta una entrada para la tabla «vertexline_ferrocarril» en la cláusula FROM
SQL state: 42P01
Context: PL/pgSQL function "srmdiferencia_espacial" line 7 at sentencia EXECUTE


donde «vertexline_ferrocarril» es el resultado de sustituir $2 por el valor introducido en el segundo parámetro de la llamada a la función.

¿Alguien sabe decirme cual es el problema y/o proponerme una solución?. Gracias de antemano.
  #2 (permalink)  
Antiguo 23/02/2011, 14:03
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: POstGis // Error 42P01:UNDEFINED TABLE

Yo probaría a hacer un select que me devuelva los resultados esperados... ese error es porque falta declarar cómo se unen las 2 tablas
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 23/02/2011, 14:05
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: POstGis // Error 42P01:UNDEFINED TABLE

Una pregunta... qué es ese ST_Equals? lo busqué en la pág oficial y no me arroja anda
__________________
Gracias de todas todas
-----
Linux!
  #4 (permalink)  
Antiguo 23/02/2011, 15:01
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Respuesta: POstGis // Error 42P01:UNDEFINED TABLE

Gracias por tu respuesta cacr.

ST_Equals devuelve un booleano indicando si dos entidades representan la misma geometría. Lo tienes aquí:

[URL="http://postgis.refractions.net/docs/ST_Equals.html"]http://postgis.refractions.net/docs/ST_Equals.html[/URL]

El caso es que he probado también con un select (mañana en la oficina puedo subirlo al foro), he probado poniendo como condición '||$1||'.geom='||$2||'.geom y en todos los casos me salta el mismo error referido siempre a la segunda entrada y nunca a la primera. He comprobado que la tabla' vertexline_ferrocarril' existe.

Respecto a "declarar como se unen las dos tablas", no se a que te puedes referir. ¿Me podrías orientar un poco? (tal vez un link, donde pueda consultar).

Una vez mas,gracias.
  #5 (permalink)  
Antiguo 26/02/2011, 16:14
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Respuesta: POstGis // Error 42P01:UNDEFINED TABLE

Buenas, solo decir que lo solucioné con un LEFTJOIN, con la condición ST_Intersects(a.geom,b.geom) para luego filtrar aquellas entidades cuyos valores de la segunda capa sean nulos.

Gracias a todos y hasta la próxima.

Etiquetas: postgis, table
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 03:37.