[SQL] How to FindNearest

2006-09-30 Thread Alexander Ilyin
How to implement the functionality similar to the BDE/Paradox 
TTable.FindNearest?

Suppose we have huge table. On the screen we need to show contents of that 
table in the Grid and under that Grid user can input in TextBox some letters. 
OnChange of this TextBox we need to make current row selection in the Grid on 
the row with value of some column nearest to the user input in the TextBox.

How this can be implemented in PostgreSQL?

At my first sight:
I found there is CURSOR functionality which can move that cursor through the 
ResultSet. But we can move it just relatively phisical row number. Is there any 
chance to make cursor move to the row by some rule based on the row values?

All possible approaches and ideas highly appreciated. There is just one 
requirement - the performance, it should work as fast as possible.

Regards,
Alexander Ilyin

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [SQL] How to FindNearest

2006-10-03 Thread Alexander Ilyin

-Original Message-
From: Bruno Wolff III <[EMAIL PROTECTED]>
To: Alexander Ilyin <[EMAIL PROTECTED]>
Date: Mon, 2 Oct 2006 19:20:49 -0500
Subject: Re: How to FindNearest

> On Sat, Sep 30, 2006 at 11:43:40 +0300,
>   Alexander Ilyin <[EMAIL PROTECTED]> wrote:
> > 
> > Suppose we have huge table. On the screen we need to show contents of that 
> > table in the Grid and under that Grid user can input in TextBox some 
> > letters. OnChange of this TextBox we need to make current row selection in 
> > the Grid on the row with value of some column nearest to the user input in 
> > the TextBox.
> > 
> > How this can be implemented in PostgreSQL?
> 
> You can search for the row with the closest above and the row with the
> closest below and then return whichever these is closer. (Remember to handle
> the case where the target is larger or smaller than all values in the
> database.) You can use ORDER BY and LIMIT 1 and an appropiiate WHERE
> clause (something like columnname >= targetvalue) to do this.
> 
> 

Thank you for your great idea. But how it can be used for positioning the 
cursor in the already existed ResultSet? Using your idea I can found the 
closest to targetvalue row but not its position in my ResultSet.
Anyway thank you for your idea it is very useful by itself. Also I can solve my 
problem using your idea and emulating the movement in my existed ResultSet. 
Even better - no need to store the large RS between cursor movements. Just each 
time I need to fetch the all visible rows.




---(end of broadcast)---
TIP 6: explain analyze is your friend