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

Comprobar igualdad de atributos (menos uno) en varias tablas con distintos atributos

Estas en el tema de Comprobar igualdad de atributos (menos uno) en varias tablas con distintos atributos en el foro de PostgreSQL en Foros del Web. Buenos días, quería solicitar vuestra ayuda con este caso: Dispongo de una función estándar y que recibe por parámetros 1.- Tabla de volcado de resultados. ...
  #1 (permalink)  
Antiguo 16/09/2011, 04:50
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Comprobar igualdad de atributos (menos uno) en varias tablas con distintos atributos

Buenos días, quería solicitar vuestra ayuda con este caso:

Dispongo de una función estándar y que recibe por parámetros

1.- Tabla de volcado de resultados.
2.- Condición espacial (es para Postgis)
3.- Tabla de entrada 1
4.- Tabla de entrada 2

Capturando la excepción de que los prámetros 3 y 4 sean el mismo he conseguido con una sola función suplir tanto el comparar dos tablas distintas, como una tabla contra si misma.

------------------------------------------------------------------------------------------------

Ahora lo que pretendo es mejorar esa función con un quinto parámetro que me permita comprobar que todos los atributos de la tabla1 sean iguales a la tabla2. Los problemas :

1.- Todos los atributos deben ser iguales excepto, lógicamente el identificador y el campo geometría por lo que no puedo recurrir a tabla1.* = tabla2.*
2.- Cada tabla de la BBDD tiene unos atributos diferentes por lo que no puedo comprobar estos atributo a atributo.

Resumiendo: Tal vez simplemente es que pretendo un imposible, y no puedo pretender que un solo esquema sea tan genérico como para adaptarse a todos los casos, pero me preguntaba si existiría algún modo de indicar mediante Postgres que quiero que se cumpla la igualdad de todos los atributos de la tabla excepto esos dos.

Otra posible solución: Una idea que tenía era realizar un pequeño bucle que recorra la tabla, compruebe cada atributo (que no sea 'gid' ni 'geom') y compare los valores. Las dudas :

1.- Que no se si esto es una "salvajada" en lo que implica tiempos de ejecución.
2.- Que no tengo ni idea de como hacerlo, pues aunque me conozco bien todas las funcionalidades de Postgis, parezco un "pez fuera del agua" cuando necesito moverme en Postgres. ¿podríais orientarme con algún ejemplo que haya en la web, o indicandome que objetos y funciones me dan acceso a los atributos de una tabla?.

Muchas gracias a todos por vuestro tiempo, y disculpad la "chapa" que os he soltado... espero que pueda solucionarse con mi primera alternativa, y no con la segunda... un saludo.
  #2 (permalink)  
Antiguo 17/09/2011, 23:36
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Comprobar igualdad de atributos (menos uno) en varias tablas con distintos


<saludos>
Pues creo que esto lo podrias resolver más fácilmente usando
un trigger o una función directamente en postgres, te sugiero revises
la documentación de postgres para que te des una idea del poder
de lo que te comento, y allí encontrarás ejemplos que te podrán ser
de guía para lo que necesitas.
Suerte con eso.
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 19/09/2011, 05:33
 
Fecha de Ingreso: noviembre-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 0
Respuesta: Comprobar igualdad de atributos (menos uno) en varias tablas con distintos

Buenas mortiprogramador, y gracias por tus sugerencias.

Resulta que ya ojeé los triggers y sus posibilidades en su momento, pues pretendo aprovechar su funcionalidad en futuros procesos.

El problema es que el proceso que estoy creando ahora mismo está pensado necesariamente para ser ejecutado "a posteriori": Me explico: es un proceso de "control de calidad" cartográfico, que será ejecutado siempre sobre trabajos ya completos, y no durante la fase de producción.

De cualquiera de los modos, si usara los triggers, igualmente tendría el problema de como indicar mediante Postgres que quiero que se cumpla la igualdad de todos los atributos de la tabla excepto dos en particular, o eso creo, ¿estoy equivocado?. Tal vez si exista una funcionalidad en los triggers de Postgis que me permitan solucionar este problema y se me haya pasado por alto, de ser así, ¿podrías orientarme un poco?

Cualquier idea o alternativa será bienvenida. Muchas gracias.

Etiquetas: atributos, bd, distintos, funcion, menos, postgres, tablas
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 21:12.