Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as SQL by sgfasg ( 16 years ago )
Fazer uso de gatilhos e asserções (ao menos 1 de cada);
gatilhos
-- Trigger: valida_atendimento on atendimento
-- DROP TRIGGER valida_atendimento ON atendimento;
CREATE TRIGGER valida_atendimento
BEFORE INSERT OR UPDATE
ON atendimento
FOR EACH ROW
EXECUTE PROCEDURE valida_atendimento();
-- Function: valida_atendimento()
-- DROP FUNCTION valida_atendimento();
CREATE OR REPLACE FUNCTION valida_atendimento()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.id_pessoa = NEW.pac_id_pessoa THEN
RAISE EXCEPTION 'Uma pessoa não pode fazer auto atendimento';
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION valida_atendimento() OWNER TO postgres;
asserções check
-- Check: "Valida_data_Atendimento"
-- ALTER TABLE atendimento DROP CONSTRAINT "Valida_data_Atendimento";
ALTER TABLE atendimento
ADD CONSTRAINT "Valida_data_Atendimento" CHECK (data_atendimento >= 'now'::text::date);
-- Check: "Valida_Orcamento"
-- ALTER TABLE orcamento DROP CONSTRAINT "Valida_Orcamento";
ALTER TABLE orcamento
ADD CONSTRAINT "Valida_Orcamento" CHECK (valor_total >= 'R$ 0,00'::money);
-- Elementos de processamento de consulta (estratégias do PostgreSQL e otimização das consultas propostas) devem ser implementados e discutidos no trabal
Um conjunto de no mínimo 10 consultas (descrição e expressões SQL equivalentes) com junções, aninhamento de seleções e/ou funções agregadas;
Consultas
01 - Encontre o nome dos paciente que tem orcamento no estado aguardando aprovação,
junto retorne a data de nascimento, valor total, situação do orcamento, descrição do diagnostico e data do diagnostico
SELECT
pessoa.nome,
pessoa_fisica.data_nacimento,
orcamento.valor_total,
orcamento.situacao_orcamento,
diagnostico.descricao_diagnostico,
diagnostico.data_diagnostico
FROM
public.diagnostico,
public.orcamento,
public.paciente,
public.pessoa_fisica,
public.pessoa
WHERE
orcamento.id_diagnostico = diagnostico.id_diagnostico AND
paciente.id_orcamento = orcamento.id_orcamento AND
paciente.id_pessoa = pessoa_fisica.id_pessoa AND
pessoa_fisica.id_pessoa = pessoa.id_pessoa AND
orcamento.situacao_orcamento = 'aguardando aprovação';
02 - Recupere o dia, valor total entrada.
select distinct item_tratamento.data_item_tratamento, (item_tratamento.quantidade * item_tratamento.valor_unitario)as total_do_dia
from (select distinct data_item_tratamento
from item_tratamento
group by data_item_tratamento)as d natural join item_tratamento
where d.data_item_tratamento = item_tratamento.data_item_tratamento
03 - Encontre os nome dos pacientes em que o pai ou a mae tbm são paciente da clinica.
select pessoa.nome
from paciente, pessoa,
(select distinct paciente.id_pessoa
from paciente, pessoa
where paciente.nome_pai = pessoa.nome OR paciente.nome_mae = pessoa.nome)as aux
where paciente.id_pessoa = aux.id_pessoa and pessoa.id_pessoa = aux.id_pessoa
04 - Encontre o nome dos dentista com seus referentes pacientes.
atendimento.id_pessoa, atendimento.pac_id_pessoa
select id_pessoa
from faz_atendimento
group by id_pessoa
select * from faz_atendimento, paciente, atendimento, (select id_pessoa,id_atendimento
from faz_atendimento)as f
select id_pessoa
from atendimento
select pac_id_pessoa
from atendimento
05 - Faça uma relação das clinicas atendidas com todos os dados do cadastro
select distinct *
from pessoa_juridica, pessoa
where pessoa_juridica.id_pessoa = pessoa.id_pessoa
06 - Recupere todos os tratamentos em andamento.
select nome_tratamento
from tratamento,(select item_tratamento.id_tratamento
from item_tratamento, (select *
from situacao
where descricao_situacao = 'em tratamento')as aux1)as aux2
where tratamento.id_tratamento = aux2.id_tratamento;
07 - Encontre qual é o convenio mais usado pelos paciente.
select *
from (select count(nome_categoria_do_convenio),nome_categoria_do_convenio
from convenio
group by nome_categoria_do_convenio) as aux1
where aux1.count=(select max(count) from (select count(nome_categoria_do_convenio),nome_categoria_do_convenio from convenio group by nome_categoria_do_convenio) as aux2)
08 - Listar o ID da ficha de atendimento de cada paciente.
select ficha_atendimento.id_atendimento, atendimento.pac_id_pessoa
from ficha_atendimento, atendimento
where ficha_atendimento.id_atendimento = atendimento.id_atendimento
09 - Liste os dados dos pacientes juntamente com os dados das suas consultas(nome do paciente, data de nascimento, data do cadastro).
select pessoa.nome, pessoa_fisica.data_nacimento, pessoa_fisica.data_cadastro, consulta.descricao_da_consultas, tipo_de_problemas_de_saude
from consulta, pessoa, pessoa_fisica, (select consulta.id_pessoa
from consulta)as t1
where consulta.id_pessoa = pessoa.id_pessoa
and pessoa.id_pessoa = pessoa_fisica.id_pessoa
and pessoa_fisica.id_pessoa = t1.id_pessoa
10 - Listar os logins do dia atual.
select *
from usuario
where data_login = current_date
Revise this Paste