Thread: Fw: How to FindNearest

Fw: How to FindNearest

From
paallen@attglobal.net
Date:
I guess I explained that very poorly.  Sorry.  It is actually much simplier.

I have 3 tables

Hole Hole_id X Y Z

Down_hole_survey Hole_id Depth_meters Azimuth Vertical_inclination X Y Z

Sample Hole_id Depth_meters X Y Z

Hole_id is a primary key in the hole table while it is a foriegn key in down_hole_survey and sample tables.

My function will take all the above info about the hole and down_hole_survey tables, and sample.hole_id and
sample.depth_metersand will calculate the coordinates.  I need to put these coordinates into sample.x , sample.y and
sample.z.
 

What I used to do was have one function that would return 3 values (x,y,z).  Then create 3 more functions that would
callcall the main function and pull out the 3 values seperately to update the 3 seperate columns.  It works fine but I
haveto call the main function 3 times which produces a slow performance.
 

I hope that I explained it better this time.

Phil
Sent via BlackBerry from Cingular Wireless  

-----Original Message-----
From: Bruno Wolff III <bruno@wolff.to>
Date: Tue, 3 Oct 2006 12:11:25 
To:Alexander Ilyin <a_ilyin@ukr.net>
Cc:pgsql-sql@postgresql.org
Subject: Re: [SQL] How to FindNearest

On Tue, Oct 03, 2006 at 14:43:40 +0300, Alexander Ilyin <a_ilyin@ukr.net> wrote:
> 
> Thank you for your great idea. But how it can be used for positioning the cursor in the already existed ResultSet?
Usingyour idea I can found the closest to targetvalue row but not its position in my ResultSet.
 

You wouldn't be able to use it to position a cursor. But if you aren't
retrieving a lot of records at once, this may still be a workable strategy
for you.

> Anyway thank you for your idea it is very useful by itself. Also I can solve my problem using your idea and emulating
themovement in my existed ResultSet. Even better - no need to store the large RS between cursor movements. Just each
timeI need to fetch the all visible rows.
 

That sounds pretty reasonable.

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
              http://archives.postgresql.org

Re: Fw: How to FindNearest

From
Bruno Wolff III
Date:
On Tue, Oct 03, 2006 at 17:35:55 +0000, paallen@attglobal.net wrote:
> 
> My function will take all the above info about the hole and down_hole_survey tables, and sample.hole_id and
sample.depth_metersand will calculate the coordinates.  I need to put these coordinates into sample.x , sample.y and
sample.z.
 
> 
> What I used to do was have one function that would return 3 values (x,y,z).  Then create 3 more functions that would
callcall the main function and pull out the 3 values seperately to update the 3 seperate columns.  It works fine but I
haveto call the main function 3 times which produces a slow performance.
 
> 
> I hope that I explained it better this time.

If they are in the same table you can update all there in the same
update statement using syntax something like the following:
UPDATE sample SET x=(some expression), y=(some expression), z=(some expression) WHERE some condition;

Probably the simplest place to start is having your function do the update
rather than return the three values.
I think in 8.2 there will be an easier way to use the result of a function that
returns a row to update multiple columns in an update statement. (That
doesn't resu;t in calling the function three times.)