· 8 years ago · May 25, 2018, 07:28 AM
1DO $$
2 DECLARE
3 lista_usuarios integer[] = (select usuario_id from usuario where estado = 'ACTIVO');
4BEGIN
5 CREATE CREATE MATERIALIZED VIEW cuentas_con_usuarios_activos AS
6 select * from cuentas where cuenta_usuario IN (lista_usuarios);
7 ...
8
9 CREATE CREATE MATERIALIZED VIEW cuentas_con_usuarios_inactivos AS
10 select * from cuentas where cuenta_usuario NOT IN (lista_usuarios);
11 ...
12END $$;
13
14lista_usuarios integer[] = array(...)
15
16lista_usuarios integer[] =
17(SELECT ARRAY (SELECT usuario_id FROM usuario WHERE estado = 'ACTIVO'));
18
19CREATE TABLE IF NOT EXISTS usuario
20 (usuario_id serial primary key,
21 usuario varchar(50),
22 estado varchar(7))
23;
24
25
26INSERT INTO usuario
27 (usuario_id, usuario, estado)
28VALUES
29 (1, 'Pedro', 'ACTIVO'),
30 (2, 'Santiago', 'OFF'),
31 (3, 'Juna', 'ACTIVO')
32;
33
34SELECT * FROM usuario;
35
36DO
37$$DECLARE
38 lista_usuarios integer[] =
39 (SELECT ARRAY (SELECT usuario_id FROM usuario WHERE estado = 'ACTIVO'));
40BEGIN
41 CREATE MATERIALIZED VIEW cuentas_con_usuarios_activos AS
42 SELECT * FROM usuario WHERE estado = 'OFF';
43
44 CREATE MATERIALIZED VIEW cuentas_con_usuarios_inactivos AS
45 SELECT * FROM usuario WHERE estado = 'ACTIVO';
46END$$;
47
48-- Probando las vistas creadas --
49
50SELECT * FROM cuentas_con_usuarios_activos;
51SELECT * FROM cuentas_con_usuarios_inactivos;
52
53usuario_id usuario estado
541 1 Pedro ACTIVO
552 2 Santiago OFF
563 3 Juna ACTIVO
57
58 usuario_id usuario estado
591 2 Santiago OFF
60
61 usuario_id usuario estado
621 1 Pedro ACTIVO
632 3 Juna ACTIVO