> Its not a very good example because the two are adjacent and 'x1' and 'x2'
> sound like they're adjacent too.

They are not adjacent - 'x1123456' and a lot of other strings starting
with 'x1' are between them.

> I'm only interested in the results of BETWEEN when you're looking at x1 and
> x2 from the pos order perspective

Then David's query is a way to go.


Pavel


On Fri, Jul 1, 2011 at 1:04 PM, e-mail mgbg25171
<mgbg25...@blueyonder.co.uk> wrote:
> Pavel, David
> Thanks for bearing with me...
>> "txt BETWEEN 'x1' AND 'x2'" you mean those rows between the row where txt
> = 'x1' and the row where txt = 'x2'
> Yes that's right.
> Its not a very good example because the two are adjacent and 'x1' and 'x2'
> sound like they're adjacent too.
> I'm only interested in the results of BETWEEN when you're looking at x1 and
> x2 from the pos order perspective
> ie doing the BETWEEN query on 'x1' and 'x2' would be useless from the rowid
> perspective/order.
> I'll write a better description of what I'm trying to do and come back.
>
> On 1 July 2011 17:48, Pavel Ivanov <paiva...@gmail.com> wrote:
>
>> > I'll certainly try
>> >>SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2' ORDER BY pos;
>> > but I need x1 and x2 to be ordered before BETWEEN sees them rather than
>> the
>> > results just sorted by pos.
>>
>> Maybe I've missed something in this conversation? Please clarify how
>> "results sorted by pos" will be different from "x1 and x2 to be
>> ordered before BETWEEN sees". And tell us more clearly what results
>> you want to see from your query. We certainly see that you want to get
>> value of pos from all rows where value of txt lies between 'x1' and
>> 'x2'. Now do you want those results to be order by value of pos (add
>> ORDER BY pos), or by value of txt (add ORDER BY txt), or you want them
>> in a random order (do not add ORDER BY at all)? If you believe that
>> result of a query differs depending on what order SQLite processes
>> rows in then you are wrong.
>>
>>
>> Pavel
>>
>>
>> On Fri, Jul 1, 2011 at 12:34 PM, e-mail mgbg25171
>> <mgbg25...@blueyonder.co.uk> wrote:
>> > I'll certainly try
>> >>SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2' ORDER BY pos;
>> > but I need x1 and x2 to be ordered before BETWEEN sees them rather than
>> the
>> > results just sorted by pos.
>> >
>> > I've just done this.
>> >    const char* sqlSelect =    "SELECT d FROM t_d "
>> >                            "WHERE xpos in "
>> >                            "(SELECT pos FROM (SELECT * from t_x ORDER BY
>> > pos) WHERE txt BETWEEN 'x1' AND 'x2')";
>> >                            //bit for t_y omitted.
>> > in the hope that (SELECT * from t_x ORDER BY pos) presents it's results
>> to
>> > SELECT BETWEEN in pos order.
>> > I am concerned about having to specify both xpos and pos and am not sure
>> how
>> > these two get reconciled.
>> > I am getting results but want to add more data to the tables to see whats
>> > going on.
>> >
>> > Thank you for your assistance though.
>> >
>> > On 1 July 2011 17:07, Pavel Ivanov <paiva...@gmail.com> wrote:
>> >
>> >> > It strikes me that
>> >> > SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2'
>> >> > needs to be operating on the results returned by
>> >> > SELECT * FROM t_x BY ORDER BY pos
>> >> > ie another level of query is required but I'm not sure of how you
>> insert
>> >> it.
>> >>
>> >> I don't understand what you are talking about here. You should write
>> >> it like this:
>> >>
>> >> SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2' ORDER BY pos;
>> >>
>> >>
>> >> Pavel
>> >>
>> >>
>> >> On Fri, Jul 1, 2011 at 12:02 PM, e-mail mgbg25171
>> >> <mgbg25...@blueyonder.co.uk> wrote:
>> >> > Thx for your suggestion...
>> >> > Yes "BY ORDER BY pos" has to be in there somewhere.
>> >> > It strikes me that
>> >> > SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2'
>> >> > needs to be operating on the results returned by
>> >> > SELECT * FROM t_x BY ORDER BY pos
>> >> > ie another level of query is required but I'm not sure of how you
>> insert
>> >> it.
>> >> > I'll have a play.
>> >> >
>> >> >
>> >> >
>> >> > On 1 July 2011 16:12, Pavel Ivanov <paiva...@gmail.com> wrote:
>> >> >
>> >> >> > What I want to do is...make sure that when I say BETWEEN I really
>> mean
>> >> eg
>> >> >> > BETWEEN x1 and x2 when you look at the table as if it's ordered by
>> pos
>> >> >> and
>> >> >> > not rowid.
>> >> >>
>> >> >> So, can you add "ORDER BY pos" to your queries?
>> >> >>
>> >> >>
>> >> >> Pavel
>> >> >>
>> >> >>
>> >> >> On Fri, Jul 1, 2011 at 11:04 AM, e-mail mgbg25171
>> >> >> <mgbg25...@blueyonder.co.uk> wrote:
>> >> >> > Thank you all for your responses.
>> >> >> > I had to go out after posting and have just come back.
>> >> >> > My concern is with...
>> >> >> > SELECT pos FROM t_x WHERE txt BETWEEN 'x1' AND 'x2'
>> >> >> > and
>> >> >> > SELECT pos FROM t_y WHERE txt BETWEEN 'y1' AND 'y2'.
>> >> >> >
>> >> >> > t_x and t_y are dimension tables.
>> >> >> > that hold the x and y margins of a spreadsheet.
>> >> >> > The margins will have an implied order shown by pos
>> >> >> > which will differ from the order in which rows are added
>> (represented
>> >> by
>> >> >> > rowid).
>> >> >> >
>> >> >> > What I want to do is...make sure that when I say BETWEEN I really
>> mean
>> >> eg
>> >> >> > BETWEEN x1 and x2 when you look at the table as if it's ordered by
>> pos
>> >> >> and
>> >> >> > not rowid. I hope that helps explain why pos exists and is not
>> rowid
>> >> i.e.
>> >> >> I
>> >> >> > want to be able to "insert" and "delete" records "!in between" the
>> >> >> existing
>> >> >> > ones or at least make it look like that even if the records are
>> >> >> physically
>> >> >> > appended to the tables.
>> >> >> > Hope this clarifies things and look forward to your thoughts.
>> >> >> >
>> >> >> >
>> >> >> > On 1 July 2011 15:30, Pavel Ivanov <paiva...@gmail.com> wrote:
>> >> >> >
>> >> >> >> >> Putting the 'ORDER BY' clause in view won't work?
>> >> >> >> >
>> >> >> >> > It will work just fine, in that the results you see will appear
>> in
>> >> the
>> >> >> >> ORDER you asked for.
>> >> >> >>
>> >> >> >> I believe that's not always true and is not required by SQL
>> standard.
>> >> >> >> Most probably 'select * from view_name' will return rows in the
>> order
>> >> >> >> written in the view. But 'select * from view_name where
>> some_column =
>> >> >> >> some_value' can already return rows in completely different order.
>> >> And
>> >> >> >> 'select * from table_name, view_name where some_condition' will
>> >> almost
>> >> >> >> certainly ignore any ORDER BY in the view.
>> >> >> >>
>> >> >> >> So ORDER BY in the view doesn't guarantee you anything.
>> >> >> >>
>> >> >> >>
>> >> >> >> Pavel
>> >> >> >>
>> >> >> >>
>> >> >> >> On Fri, Jul 1, 2011 at 10:19 AM, Simon Slavin <
>> slav...@bigfraud.org>
>> >> >> >> wrote:
>> >> >> >> >
>> >> >> >> > On 1 Jul 2011, at 3:07pm, Alessandro Marzocchi wrote:
>> >> >> >> >
>> >> >> >> >> 2011/7/1 Simon Slavin <slav...@bigfraud.org>
>> >> >> >> >>
>> >> >> >> >>> On 1 Jul 2011, at 11:20am, Alessandro Marzocchi wrote:
>> >> >> >> >>>
>> >> >> >> >>>> Isn't it possible to use a view for that?
>> >> >> >> >>>
>> >> >> >> >>> You can use a VIEW if you want, but VIEWs don't sort the table
>> >> >> either.
>> >> >> >>  A
>> >> >> >> >>> VIEW is just a way of saving a SELECT query.  When you consult
>> >> the
>> >> >> VIEW
>> >> >> >> >>> SQLite executes the SELECT.
>> >> >> >> >>
>> >> >> >> >> Putting the 'ORDER BY' clause in view won't work?
>> >> >> >> >
>> >> >> >> > It will work just fine, in that the results you see will appear
>> in
>> >> the
>> >> >> >> ORDER you asked for.
>> >> >> >> >
>> >> >> >> > However, it has no influence on how data is stored.  In fact no
>> >> table
>> >> >> >> data is stored for a VIEW at all.  The thing stored is the
>> parameters
>> >> >> given
>> >> >> >> when you created the VIEW.  Every time you refer to a VIEW in a
>> SQL
>> >> >> >> statement SQL goes back and looks at the VIEW specification again.
>> >> >> >> >
>> >> >> >> > Simon.
>> >> >> >> > _______________________________________________
>> >> >> >> > sqlite-users mailing list
>> >> >> >> > sqlite-users@sqlite.org
>> >> >> >> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >> >> >> >
>> >> >> >> _______________________________________________
>> >> >> >> sqlite-users mailing list
>> >> >> >> sqlite-users@sqlite.org
>> >> >> >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >> >> >>
>> >> >> > _______________________________________________
>> >> >> > sqlite-users mailing list
>> >> >> > sqlite-users@sqlite.org
>> >> >> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >> >> >
>> >> >> _______________________________________________
>> >> >> sqlite-users mailing list
>> >> >> sqlite-users@sqlite.org
>> >> >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >> >>
>> >> > _______________________________________________
>> >> > sqlite-users mailing list
>> >> > sqlite-users@sqlite.org
>> >> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >> >
>> >> _______________________________________________
>> >> sqlite-users mailing list
>> >> sqlite-users@sqlite.org
>> >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >>
>> > _______________________________________________
>> > sqlite-users mailing list
>> > sqlite-users@sqlite.org
>> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> >
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to