Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: