[postgis-users] SQL Statement for Multiple Tables -operatordoesn't exist: boolean && geometry
Adam
adam at spatialsystems.org
Thu Jan 12 21:06:16 PST 2006
Acutally I ended up doing this and it seemed to work okay, is this more
efficient?
SELECT zipcodes.name, urban_areas.name, states.state,
time_zones.gmt_offset, counties.county
FROM zipcodes, urban_areas, states, time_zones, counties
WHERE distance( urban_areas.the_geom, 'POINT(-88.050121 41.862380)') = 0 AND
distance( states.the_geom, 'POINT(-88.050121 41.862380)') = 0
AND
distance( time_zones.the_geom, 'POINT(-88.050121 41.862380)')
= 0 AND
distance( counties.the_geom, 'POINT(-88.050121 41.862380)') =
0 AND
distance( zipcodes.the_geom, 'POINT(-88.050121 41.862380)') =
0;
----- Original Message -----
From: "Paul Ramsey" <pramsey at refractions.net>
To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
Sent: Thursday, January 12, 2006 5:46 PM
Subject: Re: [postgis-users] SQL Statement for Multiple
Tables -operatordoesn't exist: boolean && geometry
> All in one massive SQL statement. You might find that running each layer
> individually against your POINT is more efficient, however. Doing it as
> a join is probably not optimal, since you're getting no particular
> leverage from the different layers being overlaid.
>
>
> SELECT
> zipcodes.name,
> urban_areas.name,
> states.state,
> time_zones.gmt_offset,
> counties.county
> FROM
> (select 'POINT(-88.050121 41.862380)'::geometry as the_geom) as pt,
> zipcodes,
> urban_areas,
> states,
> time_zones,
> counties
> WHERE
> zipcodes.the_geom && pt.the_geom AND
> urban_areas.the_geom && pt.the_geom AND
> states.the_geom && pt.the_geom AND
> time_zones.the_geom && pt.the_geom AND
> counties.the_geom && pt.the_geom AND
> Contains(zipcodes.the_geom,pt.the_geom) AND
> Contains(urban_areas.the_geom,pt.the_geom) AND
> Contains(states.the_geom,pt.the_geom) AND
> Contains(time_zones.the_geom,pt.the_geom) AND
> Contains(counties.the_geom,pt.the_geom)
>
>
> P.
>
> On Jan 11, 2006, at 11:19 PM, Adam wrote:
>
>> I changed my query to this:
>>
>> SELECT zipcodes.name, urban_areas.name, states.state,
>> time_zones.gmt_offset, counties.county
>> FROM zipcodes, urban_areas, states, time_zones, counties
>> WHERE zipcodes.the_geom && urban_areas.the_geom AND
>> zipcodes.the_geom && states.the_geom AND
>> zipcodes.the_geom && time_zones.the_geom AND
>> zipcodes.the_geom && counties.the_geom
>> AND distance( zipcodes.the_geom, 'POINT(-88.050121 41.862380)') = 0
>>
>> When it runs I get multiple rows with states and counties way off point.
>> \
>> The output should look like: 60137, Chicago Metro Area, Illinois, -6,
>> DuPage County
>>
>> But here's my output:
>>
>> 60137, Chicago Metro Area, Michigan, -6,
>> 60137, Chicago Metro Area, Michigan, -6, Cook County
>> 60137, Chicago Metro Area, Michigan, -6, DuPage County
>> 60137, Chicago Metro Area, Illinois, -6,
>> 60137, Chicago Metro Area, Illinois, -6, Cook County
>> 60137, Chicago Metro Area, Illinois, -6, DuPage County
>> 60137, Chicago Metro Area, Michigan, -5,
>> 60137, Chicago Metro Area, Michigan, -5, Cook County
>> 60137, Chicago Metro Area, Michigan, -5, DuPage County
>> 60137, Chicago Metro Area, Illinois, -5,
>> 60137, Chicago Metro Area, Illinois, -5, Cook County
>> 60137, Chicago Metro Area, Illinois, -5, DuPage County
>> 60137, Chicago Metro Area, Michigan, -6,
>> 60137, Chicago Metro Area, Michigan, -6, Cook County
>> 60137, Chicago Metro Area, Michigan, -6, DuPage County
>> 60137, Chicago Metro Area, Illinois, -6,
>> 60137, Chicago Metro Area, Illinois, -6, Cook County
>> 60137, Chicago Metro Area, Illinois, -6, DuPage County
>>
>> What am I doing wrong with this query?
>>
>> ----- Original Message ----- From: "Paul Ramsey"
>> <pramsey at refractions.net>
>> To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
>> Sent: Thursday, January 12, 2006 12:50 AM
>> Subject: Re: [postgis-users] SQL Statement for Multiple Tables -
>> operatordoesn't exist: boolean && geometry
>>
>>
>>> Just add an "and":
>>>
>>> SELECT zipcodes.name, urban_areas.name, states.state
>>> FROM zipcodes, urban_areas, states
>>> WHERE distance( zipcodes.the_geom, 'POINT(-88.0501 41.8623)') = 0 AND
>>> zipcodes.the_geom && urban_areas.the_geom
>>> AND zipcodes.the_geom && states.the_geom
>>>
>>> On Jan 11, 2006, at 10:39 PM, Adam wrote:
>>>
>>>> I have three tables: zip codes, metro areas, and states.
>>>>
>>>> My sql statement is:
>>>>
>>>> SELECT zipcodes.name, urban_areas.name, states.state FROM zipcodes,
>>>> urban_areas, states WHERE distance( zipcodes.the_geom, 'POINT
>>>> (-88.0501 41.8623)') = 0 AND zipcodes.the_geom &&
>>>> urban_areas.the_geom && states.the_geom
>>>>
>>>> When I try to query them all in one statement I get this error:
>>>> operator does not exist, boolean && geometry
>>>> Hint: No operator matches the given name and argument type(s). You
>>>> may need to add explicit type casts.
>>>>
>>>> If I run this statement with only two tables instead of three this
>>>> statement will work.
>>>>
>>>> How should I join three plus tables and query for one locaton?
>>>> _______________________________________________
>>>> postgis-users mailing list
>>>> postgis-users at postgis.refractions.net
>>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>>
>>> _______________________________________________
>>> postgis-users mailing list
>>> postgis-users at postgis.refractions.net
>>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
More information about the postgis-users
mailing list