Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida postgres view com trigger?


KalleckD

Pergunta

Não estou conseguindo resolver os seguintes problemas, poderiam me ajudar?: 

1- O proprietário da empresa deseja obter constantemente um relatório que apresenta
qual o veículo que foi alugado pela empresa, exibindo os dados do veículo, total de
quilometragem rodada nas locações, a quantidade de locações realizadas e, por fim,
uma média de quilômetros rodados a cada locação. Crie uma view para satisfazer esta
necessidade

2- É necessário fazer o controle da quilometragem do veículo. Ou seja, ao final de uma
locação deve ser atualizado no sistema (tabela carros) a quantidade de quilômetros
que o veículo rodou. 

create table sedes(
id numeric(10),
nome varchar(50) not null,
endereco varchar(50) not null,
telefone varchar(20) not null,
nomeGerente varchar(50) not null,
multa numeric(10,2) not null,
constraint pk_sedes primary key (id)
);

create table classesCarro(
id numeric(10),
nome varchar(20) not null check(nome in('popular', 'luxo', 'super luxo')),
valorDiario numeric(10,2) not null,
constraint pk_classesCarro primary key (id)
);

create table clientes(
id numeric(10),
nome varchar(50) not null,
cnh varchar(20) not null,
validadeCnh date not null,
categoriaCnh varchar(3) not null,
constraint pk_clientes primary key (id)
);

create table carros(
id numeric(10),
placa varchar(10) not null,
modelo varchar(40) not null,
ano varchar(9) not null,
cor varchar(20) not null,
quilometragem numeric(10,2)
not null,
descricao varchar(100) not null,
situacao varchar(30) not null check(situacao in('alugado', 'disponivel', 'fora do ponto de origem')),
origemCarro numeric(10) not null,
localizacaoCarro numeric(10) not null,
classeCarro numeric(10) not null,
constraint pk_carros primary key(id),
constraint fk_carros_sedeOrigem foreign key
(origemCarro) references sedes(id),
constraint fk_carros_sedeLocAtual foreign
key (localizacaoCarro) references sedes(id),
constraint fk_carros_classe foreign key
(classeCarro) references classesCarro(id)
);

create table reservas(
id numeric(10),
diarias numeric(10) not null,
dataLocacao date not null,
dataRetorno date,
quilometrosRodados numeric(10,2),
multa numeric(10,2),
situacao varchar(15) not null check(situacao in('finalizada', 'em aberto')),
total numeric(10,2),
carroReserva numeric(10) not null,
clienteReserva numeric(10) not null,
sedeLocacao numeric(10) not null,
sedeDevolucao numeric(10),
constraint pk_reservas primary key (id),
constraint fk_reservas_sedesLocacao
foreign key (sedeLocacao) references
sedes(id),
constraint fk_reservas_sedesDevolucao
foreign key (sedeDevolucao) references
sedes(id),
constraint fk_reservas_carros foreign key
(carroReserva) references carros(id),
constraint fk_reservas_clientes foreign key
(clienteReserva) references clientes(id)
);

create sequence seq_sedes;
create sequence seq_classes;
create sequence seq_clientes;
create sequence seq_carros;
create sequence seq_reservas;

insert into sedes values(nextval('seq_sedes'), 'A', 'Rua EFB', '123456', 'Erika', 2.00);

insert into sedes values(nextval('seq_sedes'), 'B', 'Rua ITA', '654321', 'Pedro', 4.00);

insert into classesCarro values(nextval('seq_classes'), 'popular', 30.00);

insert into classesCarro values(nextval('seq_classes'), 'super luxo', 90.00);

insert into clientes values(nextval('seq_clientes'), 'Allan', '753951', '2020-12-03', 'AB');

insert into clientes values(nextval('seq_clientes'), 'Augusto', '951753', '2020-11-10', 'AB');

insert into carros values(nextval('seq_carros'), 'ABC-123', 'HB20', '2016', 'Branco', 120.00, 'Carro cheiroso', 'disponivel',(select id from sedes where nome = 'A'), (select id from sedes where nome = 'A'), (select id from classesCarro where nome = 'popular'));

insert into carros values(nextval('seq_carros'), 'CBA-321', 'Mercedes Benz', '2017', 'Preto', 400.00, 'Carro banco de couro', 'disponivel', (select id from sedes where nome = 'B'), (select id from sedes where nome = 'B'), (select id from classesCarro where nome = 'super luxo'));

insert into reservas values(nextval('seq_reservas'), 2, '2017-11-08', '2017-11-10', 20.00, 0, 'finalizada', 200.00, (select id from carros where modelo = 'HB20'), (select id from clientes where nome = 'Allan'), (select id from sedes where nome = 'A'), (select id from sedes where nome = 'A'));

insert into reservas values(nextval('seq_reservas'), 4, '2017-11-08', '2017-11-12', 20.00, 0, 'finalizada', 600.00, (select id from carros where modelo = 'Mercedes Benz'), (select id from clientes where nome = 'Augusto'), (select id from sedes where nome = 'B'), (select id from sedes where nome = 'B'));

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...