-------------------------------------------------------------------------------
-- corr_maj.sql 
-- tourne 25 sept 2013
-------------------------------------------------------------------------------
-- actions des differents acteurs

-- ordres tapes par le programmeur (disons compte SGDB waller_a) :

drop table sejour;
drop table client;
drop table village;

create table client(
  idc int, 
  nom varchar2(10), 
  age int,
  avoir int default 2000
);

-- attention : les varchar2 ne doivent pas depasser 10 caracteres, sinon 
-- affichage select illisible (y compris dans le projet)

create table village(
  idv int,
  ville varchar2(12),
  activite varchar2(10),
  prix int,
  capacite int
);

create table sejour(
  ids int,
  idc int,
  idv int, 
  jour int
);

-------------------------------------------------------------------------------
-- employes :

-- creer villages : 
select max(idv) from village; 
  -- a chaque fois, pour avoir des identifiants differents
insert into village values(10, 'NY', 'resto', 50, 200);
insert into village values(11, 'NY', 'MOMA', 60, 300);
insert into village values(12, 'Chatelaillon', 'kitesurf', 100, 20);

-- consulter villages : 
select * from village;

-- modifier villages : 
update village set capacite = capacite + 10 where activite = 'kitesurf';
update village set activite = 'kitesurf' where activite = 'sieste';

--  consulter sejours : 
select * from sejour ;

-- traitement 3 : 
-- parametre : jour = 100
select count(*) from sejour where jour < 100; 
delete sejour where jour < 100;

-------------------------------------------------------------------------------
-- clients :

-- traitement 1 : 
-- parametres : nom='Rita', age=22
select max(idc) from client; 
  -- pour choisir nouvel idc ; vide la premiere fois
insert into client(idc, nom, age) values(2, 'Rita', 22);
select max(idc) from client;
  -- retour idc=1
-- autre inscription :
select max(idc) from client; 
insert into client(idc, nom, age) values(3, 'Riton', 23);
select max(idc) from client; 

-- traitement 2 :
-- parametres : Rita, idc 1, pour NY le jour 45
select idv, prix, activite from village where ville = 'NY' order by prix;
  -- si non vide, le premier est pris : village 11, prix 60
select max(ids) from sejour; 
  -- pour avoir identifiants uniques
insert into sejour values(100, 2, 11, 45);
update client set avoir = avoir - 60 where idc = 2;
-- retours : idv, ids, activite
-- autre achat : Riton, idc 3, pour Chatelaillon le jour 365 :
select idv, prix from village where ville = 'Chatelaillon' order by prix;
update client set avoir = avoir - 90 where idc = 3;
insert into sejour values(101, 3, 12, 365);

-- consulter villages pour lesquels aucun sejour :
select idv, ville, activite, prix
  from village
  where idv not in (select idv from sejour);

-- consulter toutes ses informations :
-- parametre : idc 2 (Rita) :
select * from client where idc = 2;
select * from sejour where idc = 2;
select village.idv, ville, activite, prix capacite
  from village, sejour 
  where village.idv = sejour.idv 
    and idc = 2;

-- authentification en debut de session :
-- parametres :  idc=2, nom='Rita'
select * from client where idc = 2 and nom = 'Rita';
  -- si vide alors arret

-------------------------------------------------------------------------------
-- verification par le programmeur :
select * from client;
select * from village;
select * from sejour;

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