domingo, 6 de novembro de 2022

SIP - Sistema integrado de pedidos


-- o privilegio mais recente de um utilizador


DROP VIEW IF EXISTS v_max_privilegio;

CREATE VIEW v_max_privilegio AS SELECT * FROM `utilizador_privilegio` WHERE idUtilizadorPrivilegio IN(SELECT MAX(idUtilizadorPrivilegio) FROM utilizador_privilegio GROUP BY idUtilizador);


-- o estado mais recente de um utilizador

DROP VIEW IF EXISTS v_max_estado_utilizador;

CREATE VIEW v_max_estado_utilizador AS SELECT * FROM estado_utilizador WHERE idEstadoUtilizador IN(SELECT MAX(idEstadoUtilizador) FROM estado_utilizador GROUP BY idUtilizador);


-- para efeturar login

DROP VIEW IF EXISTS v_login;

CREATE VIEW v_login AS 

SELECT idUtilizador, utilizador, senha, idPrivilegio  FROM utilizador JOIN v_max_estado_utilizador USING(idUtilizador) JOIN senha USING(idUtilizador) JOIN v_max_privilegio USING(idUtilizador) WHERE idEstado=2;


-- procedimento do aluno a fazer o pedido

BEGIN

INSERT INTO pedido (idAluno, idEstadoSalaProfessor) VALUES (a,b);

SET @idPedido=LAST_INSERT_ID();

INSERT INTO estado_pedido (idEstado, idPedido) VALUES (3,@idPedido);

END


-- valor mais recente de um pedido

DROP VIEW IF EXISTS v_pedido_mais_recente;

CREATE VIEW v_pedido_mais_recente AS SELECT * FROM estado_pedido WHERE idestadoPedido IN(SELECT MAX(idEstadoPedido) FROM estado_pedido GROUP BY idPedido);


-- valor mais recente de um pedido ativo

DROP VIEW IF EXISTS v_pedido_ativo;

CREATE VIEW v_pedido_ativo AS SELECT * FROM estado_pedido WHERE idestadoPedido IN(SELECT MAX(idEstadoPedido) FROM estado_pedido GROUP BY idPedido) and idEstado=3;


-- valor 

DROP VIEW IF EXISTS v_pedido_ativo_aluno_professor;

CREATE VIEW v_pedido_ativo_aluno_professor AS

SELECT sala, idPedido, idUtilizador AS idAluno, utilizador AS aluno, idProfessor, dataPedido FROM v_pedido_ativo JOIN pedido USING(idPedido) JOIN utilizador ON pedido.idAluno=utilizador.idUtilizador JOIN estado_sala_professor USING(idEstadoSalaProfessor) JOIN sala_professor USING(idSalaProfessor) JOIN sala USING(idSala);


DROP VIEW IF EXISTS v_pedido_aluno_professor;

CREATE VIEW v_pedido_aluno_professor AS

SELECT idPedido, sala, idUtilizador AS idProfessor, idAluno, utilizador AS professor,  aluno, dataPedido FROM `v_pedido_ativo_aluno_professor` JOIN utilizador ON idProfessor=idUtilizador;

Sem comentários:

Enviar um comentário