/**************************************************************************************/
/* File:        demo10                                                                */
/* Project:     TimeDB 2.0 : ALL, ANY, SOME, IN subqueries                            */
/* Author:      Andreas Steiner                                                       */
/* Date:        28-07-1998                                                            */
/* Results:                                                                           */
/**************************************************************************************/

create table t1(c char, i period, n integer) as validtime;
create table t2(c char, i period, n integer, s char(15)) as validtime;

validtime period [1980-forever)
  insert into t1 values ('c', period [1980-1990), 9999);

validtime period [1985-1999)
  insert into t2 values ('c', period [1980-1990), 9999, 'hallo');

validtime period [1987-1991)
  insert into t2 values ('d', period [1980-1990), 9999, 'hallo');

validtime period [1995-2010)
  insert into t2 values ('e', period [1980-1990), 9999, 'hallo');



select *
from t1 
where t1.c = all(select c 
                 from t2
                 where t2.c = 'c');

validtime
  select *
  from t1 
  where t1.c = all(select c 
                   from t2
                   where t2.c = 'c');

select *
from t1 
where t1.c in (select c 
               from t2
               where t2.c = 'c');


select *
from t1 
where t1.c not in (select c 
                   from t2
                   where t2.c = 'c');


validtime
  select *
  from t1 
  where t1.c in (select c 
                 from t2
                 where t2.c = 'c');


validtime
  select *
  from t1 
  where t1.c not in (select c 
                     from t2
                     where t2.c = 'c');



select *
from t1 
where t1.c = all(select c 
                 from t2
                 where t2.n = 9999);

select *
from t1 
where t1.c = any(select c 
                 from t2
                 where t2.n = 9999);


validtime
  select *
  from t1 
  where t1.c = all(select c 
                   from t2
                   where t2.n = 9999);

validtime
  select *
  from t1 
  where t1.c = any(select c 
                   from t2
                   where t2.n = 9999);


select *
from t1 
where t1.c in (select c 
               from t2
               where t2.n = 9999);

select *
from t1 
where t1.c in (select c 
               from t2
               where t2.c = 'd');

select *
from t1 
where t1.c not in (select c 
                   from t2
                   where t2.n = 9999);


select *
from t1 
where t1.c not in (select c 
                   from t2
                   where t2.c = 'd');


validtime 
  select *
  from t1 
  where t1.c in (select c 
                 from t2
                 where t2.n = 9999);

validtime 
  select *
  from t1 
  where t1.c in (select c 
                 from t2
                 where t2.c = 'd');

validtime 
  select *
  from t1 
  where t1.c not in (select c 
                     from t2
                     where t2.n = 9999);

validtime 
  select *
  from t1 
  where t1.c not in (select c 
                     from t2
                     where t2.c = 'd');



/* Coalescing of subquery : */
/* ======================== */

validtime period [2000-2020)
  insert into t2 values ('e', period [1980-1990), 9999, 'hallo');


validtime
  select *
  from t1 
  where t1.c = all((select c 
                    from t2
                    where t2.n = 9999) (period));

drop table t1;
drop table t2;



