From: | Tino Wildenhain <tino(at)wildenhain(dot)de> |
---|---|
To: | Alex Rice <alex_rice(at)arc(dot)to>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: find overlapping address ranges |
Date: | 2002-09-16 19:45:46 |
Message-ID: | 15737699.1032212746@liza |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi Alex,
if I understand your problem correctly, a so called self-join
is what you need here.
This looks like this:
select c1.gid, c1.street, ... from cityplus c1, cityplus c2
where SOME_OVERLAPPING_CONDITION(c1..., c2...)
The trick is to join your table with it self like with another
table and use the common syntax to compare your rows.
Note you probably get your results twice, if your
overlap-condition is commutable, e.g. overlap(c1,c2) is
the same as overlap(c2,c1). In this case, DISTINCT is your friend.
HTH
Tino Wildenhain
--On Montag, 16. September 2002 13:21 -0600 Alex Rice <alex_rice(at)arc(dot)to>
wrote:
> This is more of a SQL question than a pgsql question. I know this should
> not be hard, I just can't wrap my mind around it. Thanks...
>
> So I have a table with street names and address ranges. Some of the
> address ranges overlap for the same street ranges, and I need to write a
> report on those rows. In other words, I want to do something similar to
> this:
>
> SELECT gid, street, fromleft, toleft, fromright, toright
> FROm cityplus WHERE
> HAS_OVERLAPPING_ADDRESS_RANGE_FOR_SAME_STREETNAME()
> ORDER BY street
>
> Does this require a subselect? Stored procedure? Neither? Can I use a
> pgsql line geometric type to check for overlap? This data is in Postgis
> as well, so I have those methods at my disposal as well.
>
>
> Table "cityplus"
> Column | Type | Modifiers
> ------------+-------------------+-----------
> gid | integer |
> street | character varying |
> fromleft | integer |
> toleft | integer |
> fromright | integer |
> toright | integer |
> fnode_ | integer |
> tnode_ | integer |
> lpoly_ | integer |
> rpoly_ | integer |
> length | double precision |
> netcurr_ | integer |
> netcurr_id | integer |
> l_low | integer |
> l_high | integer |
> r_low | integer |
> r_high | integer |
> str | character varying |
> dgn | character varying |
> q | character varying |
> stanno | character varying |
> code | integer |
> the_geom | geometry |
> Indexes: cityplus_addnum_index,
> cityplus_geom_index,
> cityplus_gid_index,
> cityplus_oid_index
> Check constraints: "$1" (srid(the_geom) = -1)
> "$2" ((geometrytype(the_geom) =
> 'MULTILINESTRING'::text) OR ( the_geom IS NULL))
>
>
> Alex Rice
> Mindlube Software
> http://mindlube.com/
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2002-09-16 19:58:36 | Re: question regarding regular expressions |
Previous Message | Manfred Koizar | 2002-09-16 19:33:29 | Re: Physical sites handling large data |