Good morning List,

Please bare with me, this is somewhat long with
the DDL and DML included.

I have two tables that are populated by triggers
to be used to audit data changes.
The source and target tables are identical in
structure with the addition of the DML and
sequence columns iin the target.
For each key there will be at least an insert (I)
row with possibly update (U) or delete (D) rows
in chronological order.
As each row is inserted it gets a sequence
number.

I am having some trouble getting the data to
return in the correct order.
It must be a chronological return of each parent
rows and its child rows that fall chronologically
between the insert/updates/deletes.

What I expect is this (dates abbreviated) for
par_key = 100:

par_key  par_col  par_insert  par_update  par_dml
 par_seq  chi_key  chi_col  chi_insert 
chi_update  chi_dml  chi_seq  
100      100      1/1/2003                I      
 1        100      100      1/1/2003             
  I        1
100      200      1/2/2003    1/2/2003    U      
 4        100      100      1/1/2003             
  I        1
100      200      1/2/2003    1/3/2003    U      
 5        100      100      1/1/2003             
  I        1
100      200      1/2/2003    1/3/2003    U      
 5        100      200      1/1/2003    1/4/2003 
  U        4
100      200      1/2/2003    1/3/2003    U      
 5        100      300      1/1/2003    1/5/2003 
  U        5
100      200      1/2/2003    1/3/2003    U      
 5        100      400      1/1/2003    1/6/2003 
  U        6

I have used this as basis for starting, but can't
seem to get it to show in the correct order or
without extra rows.

select p.par_key,
       p.par_col,
       p.par_insert,
       p.par_update,
       p.par_dml,
       p.par_seq,
       c.chi_key,
       c.chi_col,
       c.chi_insert,
       c.chi_update,
       c.chi_dml,
       c.chi_seq
from   tab_parent p,
       tab_child c
where  p.par_key = c.chi_key
and    c.chi_insert between p.par_insert and
nvl(p.par_update,c.chi_insert)
or     c.chi_update between p.par_insert and
nvl(p.par_update,c.chi_insert)
order by
par_key,par_col,par_seq,chi_key,chi_col,chi_seq;

-----------------------

drop table tab_parent;

create table tab_parent
(par_key number,
 par_col  number,
 par_insert date,
 par_update date,
 par_dml char(1),
 par_seq number);
 
drop table tab_child;

create table tab_child
(chi_key number,
 chi_col  number,
 chi_insert date,
 chi_update date,
 chi_dml char(1),
 chi_seq number);

truncate table tab_parent;

truncate table tab_child;

insert into tab_parent
values (100,100,to_date('10-jan-2003
08:00:00','dd-mon-yyyy hh24:mi:ss'),null,'I',1);

insert into tab_parent
values (200,200,to_date('10-jan-2003
08:00:00','dd-mon-yyyy hh24:mi:ss'),null,'I',2);

insert into tab_parent
values (300,300,to_date('12-jan-2003
20:00:00','dd-mon-yyyy hh24:mi:ss'),null,'I',3);

insert into tab_parent
values (100,200,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('13-jan-2003
11:00:00','dd-mon-yyyy hh24:mi:ss'),'U',4);

insert into tab_parent
values (100,300,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('15-jan-2003
12:00:00','dd-mon-yyyy hh24:mi:ss'),'U',5);

insert into tab_parent
values (200,200,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('17-jan-2003
15:30:00','dd-mon-yyyy hh24:mi:ss'),'U',6);

insert into tab_parent
values (200,300,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('17-jan-2003
15:30:01','dd-mon-yyyy hh24:mi:ss'),'U',7);

insert into tab_parent
values (200,400,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('18-jan-2003
16:50:00','dd-mon-yyyy hh24:mi:ss'),'U',8);

insert into tab_parent
values (300,300,to_date('12-jan-2003
20:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('19-jan-2003
07:30:00','dd-mon-yyyy hh24:mi:ss'),'D',9);

insert into tab_child
values (100,100,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),null,'I',1);

insert into tab_child
values (200,200,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),null,'I',2);

insert into tab_child
values (300,300,to_date('12-jan-2003
20:00:00','dd-mon-yyyy hh24:mi:ss'),null,'I',3);

insert into tab_child
values (100,200,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('10-jan-2003
12:00:00','dd-mon-yyyy hh24:mi:ss'),'U',4);

insert into tab_child
values (100,300,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('15-feb-2003
12:00:00','dd-mon-yyyy hh24:mi:ss'),'U',5);

insert into tab_child
values (100,400,to_date('10-jan-2003
10:00:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('16-feb-2003
12:33:00','dd-mon-yyyy hh24:mi:ss'),'U',6);

insert into tab_child
values (200,300,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('15-jan-2003
08:02:00','dd-mon-yyyy hh24:mi:ss'),'U',7);

insert into tab_child
values (200,400,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('17-jan-2003
15:00:00','dd-mon-yyyy hh24:mi:ss'),'U',8);

insert into tab_child
values (200,500,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('17-jan-2003
15:30:00','dd-mon-yyyy hh24:mi:ss'),'U',9);

insert into tab_child
values (200,500,to_date('10-jan-2003
10:10:00','dd-mon-yyyy hh24:mi:ss'),
        to_date('18-jan-2003
16:50:00','dd-mon-yyyy hh24:mi:ss'),'D',10);

commit;

----------------------------

Thanks folks...

Steve

=====
Steve Haas
Opus Consultants, LLC
860.408.1512 (office/fax)
860.651.9475 (home)
[EMAIL PROTECTED]
[EMAIL PROTECTED]
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Steven Haas
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to