OOoops ....typo on the FindNext, should be a min() instead of max(), i.e.

SELECT * FROM some_table WHERE id = ( SELECT min(rowid) FROM ( SELECT *
FROM some_table WHERE original_expression AND new_expression AND rowid > X
) );

...typing has never been my strong point :-)




On Fri, May 24, 2013 at 12:47 PM, Michael Falconer <
michael.j.falco...@gmail.com> wrote:

> Leading on from what Keith suggests above re: 'and join' can we simplify
> as:
>
> Findfirst:
>
> SELECT * FROM some_table WHERE original_expression AND new_expression
> LIMIT 1;
>
> What the LIMIT 1 will return depends on what index/primary key is in
> effect, sort of hoping for rowid here :-)
>
> This appears equivalent to the temp_table from query + new_query approach,
> but perhaps there is something you have omitted that makes this invalid???
> Also not not sure where you are getting your 'X' value for 'next' and
> 'previous' processing. as there is no real find operation (which would
> likely return multiple records). If this is being stored, perhaps in
> external program code, then fine, there is a clear concept of current
> record and therefore next and previous become trivial (less than, greater
> than current, being X).
>
> FindPrevious:
>
> SELECT * FROM some_table WHERE id = ( SELECT max(rowid) FROM ( SELECT *
> FROM some_table WHERE original_expression AND new_expression AND rowid < X
> ) );
>
> FindNext:
>
> SELECT * FROM some_table WHERE id = ( SELECT max(rowid) FROM ( SELECT *
> FROM some_table WHERE original_expression AND new_expression AND rowid > X
> ) );
>
> FindLast:
>
> SELECT * FROM some_table WHERE id = ( SELECT max(rowid) FROM ( SELECT *
> FROM some_table WHERE original_expression AND new_expression ) );
>
> You can of course use the temp table approach, but sqlite I believe
> creates a temp table to facilitate the nested SELECT so we are indirectly
> using the temp approach......hope this helps.
>
> regards,
> Michael.j.Falconer.
>
>
>
>
>
> On Fri, May 24, 2013 at 10:38 AM, Keith Medcalf <kmedc...@dessus.com>wrote:
>
>>
>> > And, can I depend on SQLite to generate results in the same order as the
>> > original prepare/step sequence and the temp table generation, ie. is the
>> > temp table's rowid going to be consistent with the original step order?
>>
>> If you use an ORDER BY clause, yes.  If not, then the rows are returned
>> in random order.
>>
>> As for the rest of your questions, why do you not just join the search
>> conditions with an AND?
>>
>> ---
>> ()  ascii ribbon campaign against html e-mail
>> /\  www.asciiribbon.org
>>
>>
>>
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>
>
> --
> Regards,
>      Michael.j.Falconer.
>



-- 
Regards,
     Michael.j.Falconer.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to