Igor, et al.
 
 The first time I posted the question took over 5 hours to get there and back 
to me. So I assumed that the first question was lost and reposted the question 
with a small update to reflect the actual problem that wasn't represented in 
the first case.. 
 My mistake.
 
 The 22 is kind of like a time stamp..  (or you could just as easily add 
another column indicative of a timestamp.
 
 insert into stack values (1, 1234);
 insert into stack values (2, 1234);
 insert into stack values (6, 1234);
 insert into stack values (9, 1234);
 insert into stackpop values (12, 1234) ;
 insert into stackpop values (14, 1234) ;
 insert into stackpop values (18, 1234) ;
insert into stack values (22, 1234);
 
 so  that 12 should pop 9, 14 pops 6 and 18 pops 2  leaving the stack with 1 
and 22.
 
 I haven't had a chance to review your solution. However,  I did come up with 
one of my own for the first case, And a processing solution where the stackpop 
is queried and the stack table is processed based upon the query results...
 
 Solution 1:
 create temp table t_stack (nid integer primary key autoincrement
          , id integer, value integer);
 insert into t_stack (id, value)
        select * from stack
        where value = 1234         
           order by id desc;
 
 create temp table t_pop(nid integer primary key autoincrement
          , id integer, value integer);
 insert into t_pop (id, value) select * from stackpop order by id asc;
 
 select sp.id, s.id from t_pop sp, t_stack s where sp.nid = s.nid;
 
 Solution 2:
     for each row in stackpop  sp:
           1. stack_pop_id =  select max(id) from stack where id < sp.id 
           2. delete  the row from stack where id = stack_pop_id
     loop
 
 Thanks Igor for your suggestions... I agree using sql to implement a stack is 
pretty bad and maybe the best solution is to do this programatically. 
 
    
  
Igor Tandetnik <[EMAIL PROTECTED]> wrote: Ken  wrote:
> Does anyone have ideas on how to implement a stack using sql ????
>  Given the following tables and data:
>
>  create table stack( id integer primary key,   value integer);
>  create table stackpop ( id integer primary key, value integer );
>
>  begin;
>  insert into stack values (1, 1234);
>  insert into stack values (2, 1234);
>  insert into stack values (6, 1234);
>  insert into stack values (9, 1234);
> insert into stack values (22, 1234);
>
>  insert into stackpop values (12, 1234) ;
>  insert into stackpop values (14, 1234) ;
>  insert into stackpop values (18, 1234) ;
>  commit;
>
>  Do you have any ideas for a select that will return the stackpop and
>      stack id's paired as follows:
>      12 | 9
>      14 | 6
>      18 | 2

What's the logic supposed to be here? Why is the stack record with id=22 
omitted?

I believe I've answered this question the first time you aked it. Have 
you found the answer lacking? In what respect?

Igor Tandetnik 


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------


Reply via email to