Thread: Fw: How to FindNearest
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
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.)