Banco de Dados Avançado
Problema:
Uma clínica possui médicos de diversas especialidades. Para ser atendido, o paciente se dirige a um guichê na recepção para fornecer as informações necessárias, recebe uma senha e aguarda ser chamado para atendimento. Essa clínica deseja manter uma base de dados para poder emitir relatórios mensais. Nessa base de dados há as seguintes tabelas: paciente(id, cpf, rg, nome, sexo, datanasc, endereço, telefone); medico(id, cpf, rg, crm, nome, especialidade, endereço, telefone); espera(id_pac, id_med, data, horaEntrada, horaSaida, status); atendimento(id_pac, id_med, data, horaEntrada, horaSaida, observacoes);
O atributo espera.status indica se houve atendimento ou desistência. Com base nas informações acima resolva as seguintes questões:
1. Escreva uma query para listar em ordem crescente o número de pacientes atendidos, por médico, em um determinado período de dias. (2 pontos)
SELECT COUNT(*) PACIENTES, m.nome MEDICO FROM paciente p, medico m, atendimento a WHERE (p.id = a.id_pac) AND (m.id = a.id_med) AND (a.data BETWEEN '2013-03-15' AND '2013-04-30') GROUP BY m.id ORDER BY PACIENTES,MEDICO;
2. Escreva uma query para verificar se houve pacientes atendidos por mais de um médico em um determinado período de dias. (2 pontos)
SELECT p.nome PACIENTE FROM paciente p, medico m, atendimento a WHERE (p.id = .id_pac) AND (m.id = a.id_med) AND (a.data BETWEEN '2013-03-01' AND '2013-04-30') GROUP BY p.id HAVING COUNT(p.id) > 1 ORDER BY m.nome, p.nome;
3. Quando um paciente é atendido, um registro é inserido na tabela atendimento e, automaticamente, a tabela espera deve ser atualizada. Proponha e implemente uma solução em MySQL que atualize a tabela espera quando um paciente for atendido. (6 pontos)
Criar um trigger no banco que seja atualize a tabela de espera automaticamente quando um registro de atendimento for inserido.
DELIMITER $$
CREATE TRIGGER