Re: find overlapping address ranges - Mailing list pgsql-general

From Martijn van Oosterhout
Subject Re: find overlapping address ranges
Date
Msg-id 20020917121843.A19764@svana.org
Whole thread Raw
In response to Re: find overlapping address ranges  (Tino Wildenhain <tino@wildenhain.de>)
Responses Re: find overlapping address ranges
List pgsql-general
On Mon, Sep 16, 2002 at 09:45:46PM +0200, Tino Wildenhain wrote:
> 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...)

Probably something like:

a.streetname = b.streetname
and a.numhigh > b.numlow
and a.numlow < b.numhigh

> 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.

Or you can make the operation non-commutable by using:

a.addressid < b.addressid

This will halve the number of comparison required.

> --On Montag, 16. September 2002 13:21 -0600 Alex Rice <alex_rice@arc.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@postgresql.org
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly

--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> There are 10 kinds of people in the world, those that can do binary
> arithmetic and those that can't.

pgsql-general by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: pg_proc and pg_type
Next
From: Bruce Momjian
Date:
Subject: Open Source Database article