CREATE OR REPLACE VIEW "CINEMA"."CAR_SALE" ("TASTO","SALA",
    "ALIAS","POSTI_SALA","IDSALA","IDCALEND","MODIFICA",
    "ESAURITO","IDPACCHETTO","TITOLO","IDTARIFFA","STATO_FILM",
    "ORA_INIZIO","POSTI_LIBERI") AS 
    select 
 a.tasto, a.sala, a.alias, a.posti_sala, 
 nvl(idsala,0), nvl(a.idcalend,0), 
 nvl(modifica,0), esaurito, nvl(idpacchetto,0), 
  nvl(titolo,'*** In vendita tra poco ***'), nvl(idtariffa,0), 
 nvl(stato_film,' '), nvl(ora_inizio,SYSDATE), 
 a.posti_sala - nvl(b.posti_liberi,0) 
from bglok a, np0 b 
where (a.idcalend=b.idcalend (+))




CREATE OR REPLACE VIEW "CINEMA"."BGLOK" ("TASTO","SALA","ALIAS",
    "POSTI_SALA","IDSALA","VUOTO","IDCALEND","MODIFICA",
    "ESAURITO","IDPACCHETTO","TITOLO","IDTARIFFA","STATO_FILM",
    "ORA_INIZIO") AS 
    SELECT A.TASTO, A.DESCR AS SALA, A.ALIAS AS ALIAS, A.NPOSTI 
    AS POSTI_SALA, A.IDSALA,B.* 
FROM ( 
 select TASTO, DESCR , ALIAS, s.IDSALA, count(*) as NPOSTI 
 from sale s, posti p 
 where 
 s.idsala = p.idsala 
 and p.ordine_ven is not null 
 group by TASTO, DESCR, ALIAS, s.IDSALA 
) A, 
   (SELECT C.IDSALA AS VUOTO, C.IDCALEND, C.MODIFICA, C.ESAURITO, C.IDPACCHETTO, 
P.DESCRIZIONE AS TITOLO, C.IDTARIFFA, TO_CHAR(C.data_ora,'HH24:MI') AS STATO_FILM, 
C.data_ora AS ORA_INIZIO 
    FROM PACCHETTO P, CAL_CORR C 
    WHERE P.IDPACCHETTO=C.IDPACCHETTO 
      AND C.DATA_ORA > SYSDATE 
      AND ROUND(( C.DATA_ORA - SYSDATE) * 1440) <  (select 
visualizza_inizio from datifissi) 
    UNION 
    SELECT C.IDSALA AS VUOTO, C.IDCALEND, C.MODIFICA, C.ESAURITO, C.IDPACCHETTO, 
P.DESCRIZIONE AS TITOLO, C.IDTARIFFA, 'I TEMPO' AS STATO_FILM, C.data_ora AS ORA_INIZIO 
    FROM PACCHETTO P, CAL_CORR C 
    WHERE P.IDPACCHETTO=C.IDPACCHETTO 
      AND C.DATA_ORA < SYSDATE 
      AND ROUND(( SYSDATE - C.DATA_ORA) * 1440) < (select 
visualizza_fine from datifissi)) B 
WHERE (A.IDSALA=B.VUOTO(+))



CREATE OR REPLACE VIEW "CINEMA"."NP0" ("IDCALEND","POSTI_LIBERI")
    AS 
    select idcalend, count(*) as posti_liberi 
from vendite 
where 
idcalend in (select idcalend from bglok ) 
and tipo <> 'A' 
and idposto <> 'X' 
group by idcalend











CREATE OR REPLACE VIEW "CINEMA"."BGLOK" ("TASTO","SALA","ALIAS",
    "POSTI_SALA","IDSALA","VUOTO","IDCALEND","MODIFICA",
    "ESAURITO","IDPACCHETTO","TITOLO","IDTARIFFA","STATO_FILM",
    "ORA_INIZIO") AS 
    SELECT A.TASTO, A.DESCR AS SALA, A.ALIAS AS ALIAS, A.NPOSTI 
    AS POSTI_SALA, A.IDSALA,B.* 
FROM ( 
 select TASTO, DESCR , ALIAS, s.IDSALA, count(*) as NPOSTI 
 from sale s, posti p 
 where 
 s.idsala = p.idsala 
 and p.ordine_ven is not null 
 group by TASTO, DESCR, ALIAS, s.IDSALA 
) A, 
   (SELECT C.IDSALA AS VUOTO, C.IDCALEND, C.MODIFICA, C.ESAURITO, C.IDPACCHETTO, 
P.DESCRIZIONE AS TITOLO, C.IDTARIFFA, TO_CHAR(C.data_ora,'HH24:MI') AS STATO_FILM, 
C.data_ora AS ORA_INIZIO 
    FROM PACCHETTO P, CAL_CORR C 
    WHERE P.IDPACCHETTO=C.IDPACCHETTO 
      AND C.DATA_ORA > SYSDATE 
      AND ROUND(( C.DATA_ORA - SYSDATE) * 1440) <  (select 
visualizza_inizio from datifissi) 
    UNION 
    SELECT C.IDSALA AS VUOTO, C.IDCALEND, C.MODIFICA, C.ESAURITO, C.IDPACCHETTO, 
P.DESCRIZIONE AS TITOLO, C.IDTARIFFA, 'I TEMPO' AS STATO_FILM, C.data_ora AS ORA_INIZIO 
    FROM PACCHETTO P, CAL_CORR C 
    WHERE P.IDPACCHETTO=C.IDPACCHETTO 
      AND C.DATA_ORA < SYSDATE 
      AND ROUND(( SYSDATE - C.DATA_ORA) * 1440) < (select 
visualizza_fine from datifissi)) B 
WHERE (A.IDSALA=B.VUOTO(+));




CREATE OR REPLACE VIEW "CINEMA"."CAR_SALE" ("TASTO","SALA",
    "ALIAS","POSTI_SALA","IDSALA","IDCALEND","MODIFICA",
    "ESAURITO","IDPACCHETTO","TITOLO","IDTARIFFA","STATO_FILM",
    "ORA_INIZIO","POSTI_LIBERI") AS 
    select 
 a.tasto, a.sala, a.alias, a.posti_sala, 
 nvl(idsala,0), nvl(a.idcalend,0), 
 nvl(modifica,0), esaurito, nvl(idpacchetto,0), 
  nvl(titolo,'*** In vendita tra poco ***'), nvl(idtariffa,0), 
 nvl(stato_film,' '), nvl(ora_inizio,SYSDATE), 
 a.posti_sala - nvl(b.posti_liberi,0) 
from bglok a, np0 b 
where (a.idcalend=b.idcalend (+));
































