[Gvsig_desarrolladores] consulta SQL involucrando varias tablas

Francisco José fpenarru en iver.es
Lun Ago 21 08:50:52 CEST 2006


Hola Marcos.

Tal y como quedamos, te envío el nuevo driver de PostGIS modificado. 
Tendrás que hacer un "diff" de este fichero con el tuyo y coger 3 
trocitos en los que ha cambiado la forma de trabajar con 
"compoundWhere". Si has más cambios, son debidos a otras cosas de la 
nueva versión, así que no los copies.

En la siguiente versión, hemos añadido en el diálogo un cuadro de texto 
para que el usuario especifique la cláusula where con la que quiere 
trabajar. Así podrás probar bien esta parte.

Respecto a lo que apuntas de unir dos tablas, ya nos lo había solicitado 
Erwan Bocher (saludos) hace un tiempo. Ahora mismo con este driver no se 
puede, pero es algo que nos pareció una muy buena idea, y es una de las 
"muchas - demasiadas" cosas que tenemos pendiente.

Por el momento, y para practicar con el código, Erwan se hizo un driver 
que le permitía trabajar con esas consultas (eso sí, cargando las 
entidades en memoria).

Resumiendo, que buena idea, pero que hasta que no salga la versión 
estable 1.0, no creo que nos pongamos con ello. Lo mismo que tenemos 
pendiente poner una consola para usuarios avanzados que permita lanzar 
cualquier tipo de consulta sobre la base de datos (para crear buffers, 
intersecciones, etc directamente con PostGIS).

Saludos, y como dicen los "yanquis": keep going!!.

marcos boullón magán escribió:
> Hola,
>
> Una última consulta sobre el tema de gvSIG y PostGIS.
>
> Yo abro una conexión a mi base de datos mediante el uso del método
> "LayerFactory.createDBLayer(driver, "título", proj)", donde "driver"
> tiene la información de la consulta SQL almacenada en un objeto
> DBLayerDefinition. En ese objeto es donde he definido el nombre de la
> tabla, columnas que me interesan, geometría, fid... que gvSIG se
> encarga de procesar para obtener una llamada SQL estándar: "SELECT
> asbinary(geometria,'xdr'),id,valor FROM tabla ORDER by id".
>
> Mi pregunta es, ¿hay alguna forma de conseguir hacer una consulta a la
> base de datos que involucre a varias tablas? Me gustaría cómo realizar
> una llamada equivalente al SQL "SELECT
> asbinary(tabla1.geometria,'xdr'), tabla1.id, tabla1.valor,
> tabla2.valor FROM tabla1, tabla2 WHERE tabla1.valor=tabla2.valor ORDER
> by tabla1.id" (aunque la operación es algo idiota, creo que se
> entiende el problema, ¿no? Se trata de tener atributos de varias
> tablas).
>
> Gracias por adelantado,
>
> Marcos
>
> PD: Realmente lamento daros tanto la lata.
>


-- 
Francisco José Peñarrubia
Equipo gvSIG

IVER T.I. S.A.
c/Salamanca 50
46005 Valencia
Spain

------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : PostGisDriver.zip
Tipo       : application/x-zip-compressed
Tamaño     : 6594 bytes
Descripción: no disponible
Url        : http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20060821/b44eb2b9/PostGisDriver-0001.bin


Más información sobre la lista de distribución gvSIG_desarrolladores