#!../src/pql -f

set path './';

print 'NLPerforming PQL testNL';
print   '-------------------NL';

print 'NLI. Preparation phaseNLNL';

print 'Creating relation <angest>NL';

create angest as
primary anr int,
ordinary aname char 20,
ordinary salary float;


print 'Creating relation <abteil>NL';

create abteil as
primary abtnr int,
ordinary abtname char 20;

print 'Creating relation <worksin>NL';

create works_in as
primary anr int,
primary abtnr int;

print 'Inserting tuplesNL';

begin angest;
insert into angest values 1, 'Smith', 2300.0;
insert into angest values 2, 'Miller', 3100.0;
insert into angest values 3, 'Adams', 1800.0;
insert into angest values 4, 'Franklin', 4500.0;
commit angest;

begin abteil;
insert into abteil values 20, 'Public Relations';
insert into abteil values 25, 'Marketing';
insert into abteil values 14, 'Administration';
insert into abteil values 2, 'Management';
commit abteil;

begin works_in;
insert into works_in values 1, 20;
insert into works_in values 1, 25;
insert into works_in values 2, 20;
insert into works_in values 2, 25;
insert into works_in values 2, 14;
insert into works_in values 3, 14;
insert into works_in values 4, 2;
insert into works_in values 4, 14;
insert into works_in values 4, 20;
insert into works_in values 4, 25;
commit works_in;

print 'NLII. Test phaseNLNL';

print 'NL1. select * from angest;NLNL';
select * from angest;
print 'NL2. select anr, salary from angest;NLNL';
select anr, salary from angest;
print 'NL3. select ang.anr from angest ang;NLNL';
select ang.anr from angest ang;
print 'NL4. select aname, abtname from angest a, works_in b abteil cNL';
print 'TABwhere a.anr = b.anr and b.abtnr = c.abtnr;NLNL';
select aname, abtname from angest a, works_in b, abteil c where a.anr = b.anr and b.abtnr = c.abtnr;
print 'NL5. select sum(salary) from angest;NLNL';
select sum(salary) from angest;
print 'NL6. select aname from angest angNL';
print 'TABwhere not exists ( select * from abteil abtNL';
print 'TABTABwhere not exists ( select * from works_in wNL';
print 'TABTABTABwhere w.anr = ang.anr and w.abtnr = abt.abtnr ) );NLNL'; 
select aname from angest ang where not exists ( select * from abteil abt where not exists ( select * from works_in w where w.anr = ang.anr and w.abtnr = abt.abtnr ) ); 
