/**************************************************************************************/
/* File:        demo01                                                                */
/* Project:     TimeDB 2.0 : UNION, INTERSECT, EXCEPT                                 */
/* Author:      Andreas Steiner                                                       */
/* Date:        27-07-1998                                                            */
/* Results:                                                                           */
/**************************************************************************************/

CREATE TABLE p(X INTEGER) AS VALIDTIME;
CREATE TABLE q(X INTEGER) AS VALIDTIME;
CREATE TABLE s(X INTEGER, Y INTEGER) AS VALIDTIME;

VALIDTIME PERIOD [1981-1985) INSERT INTO p VALUES (1);
VALIDTIME PERIOD [1983-1987) INSERT INTO p VALUES (1);
VALIDTIME PERIOD [1983-1987) INSERT INTO p VALUES (2);
VALIDTIME PERIOD [1982-1988) INSERT INTO p VALUES (3);

VALIDTIME PERIOD [1982-1985) INSERT INTO q VALUES (1);
VALIDTIME PERIOD [1983-1987) INSERT INTO q VALUES (3);

VALIDTIME PERIOD [1982-1984) INSERT INTO s VALUES (3, 3);


NONSEQUENCED VALIDTIME
  SELECT *
  FROM   p;
  

VALIDTIME 
  SELECT *
  FROM   p;


VALIDTIME 
  SELECT *
  FROM   p, q, s
  WHERE  p.x = q.x AND q.x = s.x;


VALIDTIME
  (SELECT *
   FROM   p) (PERIOD);


VALIDTIME SELECT * FROM p (PERIOD);


VALIDTIME SELECT * FROM p (PERIOD) a1, p (PERIOD) a2;


VALIDTIME
   SELECT *
   FROM   p
  UNION
   SELECT *
   FROM   q;


VALIDTIME
  (SELECT *
   FROM   p
  UNION
   SELECT *
   FROM   q) (PERIOD);


VALIDTIME
   (SELECT *
    FROM   p) (PERIOD)
  UNION
   ((SELECT *
     FROM   q
   EXCEPT
     SELECT X
     FROM   s) (PERIOD));


VALIDTIME
  ( SELECT *
    FROM   p
  UNION
   (SELECT *
    FROM   q
   EXCEPT
    SELECT X
    FROM   s)) (PERIOD);


VALIDTIME
   SELECT *
   FROM   p
  INTERSECT
   (SELECT *
    FROM   q
   EXCEPT
    SELECT X
    FROM   s);


NONSEQUENCED VALIDTIME
 (SELECT *
  FROM   p
 INTERSECT
  (SELECT *
   FROM   q
  EXCEPT
   SELECT X
   FROM   s));


NONSEQUENCED VALIDTIME PERIOD [beginning-forever)
  SELECT *
  FROM   p
 INTERSECT
  (SELECT *
   FROM   q
  EXCEPT
   SELECT X
   FROM   s);


NONSEQUENCED VALIDTIME PERIOD [1990-1994)
  SELECT *
  FROM   p
 INTERSECT
  (SELECT *
   FROM   q
  EXCEPT
   SELECT X
   FROM   s);


NONSEQUENCED VALIDTIME PERIOD [beginning-forever)
 (SELECT *
  FROM   p
 INTERSECT
  (SELECT *
   FROM   q
  EXCEPT
   SELECT X
   FROM   s));


VALIDTIME PERIOD [1983-1986)
  SELECT * FROM s;


VALIDTIME PERIOD [1990-1994)
  SELECT * FROM s;
  
  
VALIDTIME PERIOD [1983-1986)
 (SELECT *
  FROM   p
 INTERSECT
  (SELECT *
   FROM   q
  EXCEPT
   SELECT X
   FROM   s)) (PERIOD);



VALIDTIME
   (SELECT *
    FROM   p) (PERIOD)
   EXCEPT
   (SELECT *
    FROM q) (PERIOD);


VALIDTIME
  (SELECT *
   FROM   p
  EXCEPT
   SELECT *
   FROM q) (PERIOD);


VALIDTIME
     (SELECT * FROM p) (PERIOD)
  INTERSECT
     (SELECT * FROM q)(PERIOD);


VALIDTIME
   (SELECT * FROM p
  INTERSECT
   SELECT * FROM q) 
 (PERIOD);


VALIDTIME
  (SELECT 'timeconsult'
   FROM   p, q, s
   WHERE  p.x=q.x AND q.x=s.x) (PERIOD);


DROP TABLE p;
DROP TABLE q;
DROP TABLE s;
