Just to clarify further "pos BETWEEN txt = 1990 and 1991" as its stands
looks (to my naive eye) like its going to return 1 3 2 and if you ORDER BY
pos then it's going to return 1 2 3
Neither of which is what I want.
By contrast if you were to "sort" the table FIRST then "pos BETWEEN txt =
1990 and 1991" would return 1 2 and this is what I want.



On 1 July 2011 18:24, e-mail mgbg25171 <mgbg25...@blueyonder.co.uk> wrote:

> Here's an example of what I'm trying to do with my query
> t_x
> rowid=1,pos=1, txt=1990
> rowid=2,pos=3, txt=1992
> rowid=3,pos=2, txt=1991
>
> t_y
> rowid=1,pos=3,txt="sg&a expenses"
> rowid=2,pos=2,txt="cogs"
> rowid=3,pos=1,txt='revenue'
>
> t_d
> rowid=1,xpos=1,ypos=1,d=$1
> rowid=2,xpos=1,ypos=2,d=$2
> rowid=3,xpos=1,ypos=3,d=$3
> rowid=4,xpos=3,ypos=1,d=$7
> rowid=5,xpos=3,ypos=2,d=$8
> rowid=6,xpos=3,ypos=3,d=$9
> rowid=7,xpos=2,ypos=1,d=$4
> rowid=8,xpos=2,ypos=2,d=$5
> rowid=9,xpos=2,ypos=3,d=$6
>
>
> So in the GUI you'd see t_x as 1990...1991,,,1992 cos that's pos order
>
> you'd see t_y as
> revenue
> cogs
> sg&a expenses
> cos that's pos order
>
> and you'd see t_d as
>             1990  1991   1992
> revenue    1      2        3
> cogs        4      5        6
> sg&a        7     8        9
>
> ie the order in which rows are added i.e. rowid order is not the order
> of the row's position in the GUI (pos order is the GUI order)
>
> The query is to return those data cells encapsulated by the margin text
> values so...
> Select all cells BETWEEN 1990 and 1991 and cogs and sg&a.
> The answer would be 4 5 7 8.
>
> Does this help to visualise what I'm trying to do?
>
>
>
>
> On 1 July 2011 18:14, Pavel Ivanov <paiva...@gmail.com> wrote:
>
>> > 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
>>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to