[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