[postgis-users] Update from spatial query problem

Ulises F-Troche ufeliciano at yahoo.com
Sun Jan 6 20:14:49 PST 2013


Thanks, Steve...

it worked great! In my statement the last line was missing.


________________________________
 From: Stephen Woodbridge <woodbri at swoodbridge.com>
To: postgis-users at lists.osgeo.org 
Sent: Sunday, January 6, 2013 8:56 AM
Subject: Re: [postgis-users] Update from spatial query problem
 
Sorry, try one of these:


update table2 set area=mytable.name
   from (select table1.name, table3.code
           from table3, table1
           where st_within(table3.geom,table1.geom)) AS mytable
  where mytable.code=table2.code;

or

update table2 set area=table1.name
   from table3, table1
  where st_within(table3.geom, table1.geom)
        and table3.code=table2.code;

-Steve

On 1/6/2013 2:26 AM, Ulises F-Troche wrote:
> Thanks for the suggestion, Steve, but when I ran your suggested
> statement, it fail with...
>
> ERROR: columnn  mytable.code do not exists
> LINE 6: where mytable.code=table2.code;
>                ^
>
> ********** Error **********
>
> ERROR: no existe la columna mytable.code
> SQL state: 42703
> Character: 191
>
>
> ------------------------------------------------------------------------
> *From:* Stephen Woodbridge <woodbri at swoodbridge.com>
> *To:* postgis-users at lists.osgeo.org
> *Sent:* Thursday, January 3, 2013 2:39 PM
> *Subject:* Re: [postgis-users] Update from spatial query problem
>
> On 1/3/2013 2:27 PM, Ulises F-Troche wrote:
>  > Hi group,
>  >
>  > I'm new to PostGIS and so far I'm really liking it.  I'm trying to
>  > update a table based on a spatial query but I have not been able to do
>  > it successfully.  I have 3 tables as follow:
>  >
>  > table1 (areas):
>  > - id (polygon code)
>  > - name (polygon name)
>  > - geom (polygon)
>  >
>  > table2 (non spatial table for persons)
>  > - code (person id)
>  > - name (person name)
>  > - lastname (person last name)
>  > - area (area name as appears in table1)
>  >
>  > table3 (person location)
>  > - code (person id)
>  > - geom (point)
>  >
>  > I need to update table2.area (which is null) based on the location of
>  > each point in table3. The following query provides the location
>  > information required...
>  >
>  > select table3.*,table1.name
>  > from table3,table1
>  > where st_within(table3.geom,table1.geom);
>  >
>  > but when try to create the update statement it is updating all records
>  > with the same value (area name), which is the same of the first record
>  > returned by the selection query...
>  >
>  > update table2
>  > set area=mytable.name
>  > from (select table1.name <http://table1.name/> <http://table1.name/>
>  > from
>  > table3,table1
>  > where st_within(table3.geom,table1.geom)) AS mytable;
>
> Your update has no qualifier that says "What record int table2 should
> get updated" so all records are getting updated.
>
> This might give you better results:
>
> update table2 set area=mytable.name
> from (select table1.name
>          from table3, table1
>          where st_within(table3.geom,table1.geom)) AS mytable
> where mytable.code=table2.code;
>
> -Steve
>
>
>  > Any help to figure this out is appreciated.
>  >
>  > Thanks,
>  >
>  > Ulises
>  >
>  >
>  >
>  > _______________________________________________
>  > postgis-users mailing list
>  > postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
>  > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>  >
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org <mailto:postgis-users at lists.osgeo.org>
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>

_______________________________________________
postgis-users mailing list
postgis-users at lists.osgeo.org
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20130106/3696f066/attachment.html>


More information about the postgis-users mailing list