Duvida trigger sql

08/11/2017

0

Olá, estou com uma duvida: Não estou conseguindo criar um metodo para resolver esses dois problemas >

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'));
Kalleck

Kalleck

Responder

Posts

08/11/2017

Venancio Alves

Olá Kalleck, para criar a View basta fazer o seguinte script:


CREATE VIEW nome_da_view
SELECT selecione_os_campos
FROM nome_tabela;


Para ver o resultado da View:

SELECT * FROM nome_da_view;

Observações: Após o nome da View vai utilizar a instrução SELECT normalmente, caso necessite pode usar WHERE, JOIN, Subquery e funções.

Quanto ao segundo problema não compreendi.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar