Mira, existen muchas alternativas, pero si quieres tener todo en una consulta con las tablas que mencionas puedes utilizar un inner join por ejemplo:

SELECT u.id, u.nombre, u.dir, u.geo, m.id, m.loc, m.manz, m.parcela
FROM usuarios u INNER JOIN mapa m on u.geo = m.geo
WHERE m.geo = LOQUEBUSCAS

Esto te traería todos los registros de usuarios que tienen registros en la tabla mapa donde el campo geo sea igual a lo que sea que busques.

Puedes utilizar otras ordenes en lugar del INNER JOIN, sería bueno que le dieras una hojeada al manual.

Existen otros temas como la integridad referencial, pero no se si con esto tengas para lo que estas tratando de hacer.

Saludos.

Satoru Lucas Shindoi escribió:
Buenas gente.... espero que no me tiren una silla por lo que voy a preguntar 
(mis primeros dos mensajes recibidos de la lista me acobardaron un poco :-P )

Una breve reseña:
- Herramientas utilizadas:
 a) Postgresql 8.1 sobre Debian Etch.
 b) Versión de Postgis correspondiente.
 c) Qgis 0.11
 d) Grass 6.3 (del svn)
 e) gvSIG
 f) ARCView (solo para comparativa)

Resulta que tengo un proyecto hecho en ARCView, con sus correspondientes 
shapes, dbfs, etc.
He montado el motor con la extensión geoespacial, creado las tablas 
correspondientes, etc.
Luego he migrado los archivos shapes utilizando shp2pgsql (el modulo SPIT del 
qgis me sigue dando un error) sin problemas.
Teniendo los datos del proyecto migrados, me estaba dedicando a utilizar los 
cuatro entornos mencionados, cuando noto que no tenia todas las tablas migradas.
Mirando las capas shapes y sus correspondientes dbfs, noto que existe un dbf 
que no esta relacionado a ningún shape.
Realizando la consulta correspondiente, me indican que esta tabla esta 
"vinculada" a las otras mediante un campo en común.
Me presentan un par de vías para solucionar esta cuestión, la primera es "desvincular" 
las tablas (via ARCView) y guardar los shapes nuevamente (con otro nombre) con lo que debería 
guardar los atributos todos juntos (no funciono). Escribiendo esto se me ocurre que debería haber 
"unido" la tabla en cuestión con alguna de las otras.... lo voy a probar.
El otro camino era hacerla desde el motor. O sea vincular las tablas usando 
postgresql.
No soy un DBA, así que quizás mi consulta sea medio zonza.... como se hace esto?

Voy a tratar de explicarme un poco mejor....

Tengo dos tablas: usuarios y mapa

usuarios
id, nombre, dir, geo

mapa
id, loc, manz, parcela, geo

el campo geo es el campo en común.

En Postgres, tengo la tabla mapa con los datos de la capa, y migre (mediante dbf2pos, "toda 
una aventura") los dbfs "faltantes" a SQL y luego al RDBM.

Lo que me gustaría es que al buscar una ubicación en la capa mapa, el motor mediante el 
"vinculo" que sería "geo" me traiga el registro desde usuarios.

Espero haber sido algo claro (y soy consciente de mis (aun) limitados 
conocimientos en postgres, sql y demás....)

Tampoco espero una solución mágica. A veces un "lee esto salame: <link>" es mas útil que 
un "hace click y dale next next..."

Un abrazo y gracia por su paciencia (si leyeron hasta aquí)


--
TIP 8: explain analyze es tu amigo

Responder a