Jump to content
Fórum Script Brasil
  • 0

Criando Function MySQL


Question

Alguém me ajuda com essa atividade, eu já tentei várias vezes e ainda não consegui entender. Não to conseguindo resultado.

Esse é o exercício:

1 - Desenvolva uma function que retorne o nome do síndico passando como parâmetro o identificador do síndico. Depois utilize a function criada para desenvolver uma instrução que apresente os dados dos condomínios (nome, endereço) e o nome do síndico de cada um deles.

2 - Desenvolva uma function que calcule o valor da taxa de condomínio a partir do valor do apartamento, passando como parâmetro o identificador do apartamento e o percentual aplicado ao valor para calcular a taxa. Depois utilize a function criada para desenvolver uma instrução que apresente os dados dos apartamentos (numero, valor) de um determinado condomínio e a taxa a ser paga.

Esse é o database:

 

create database imobiliaria;

use imobiliaria;

create table sindico (
  matricula int(3) not null auto_increment,
  nome varchar(80) default null,
  endereco varchar(80) default null,
  telefone varchar(15) default null,
  primary key (matricula)
);

insert into sindico values (1,'antonio carlos','avenida santos dummont, número 789, califórnia, são paulo','(11) 3456-6787'),(2,'sidnei delgado','alameda xv de novembro, número 123, jockey club, são paulo','(11) 3452-4562');

create table condominio (
  codigo int(5) not null auto_increment,
  nome varchar(50) default null,
  endereco varchar(80) default null,
  matricula_sind int(3) default null,
  primary key (codigo),
  key fx_cond_sindico (matricula_sind),
  constraint fx_cond_sindico foreign key (matricula_sind) references sindico (matricula)
);

insert into condominio values (1,'condomí­nio são paulo','alameda getulio vargas, número 897, centro, são paulo',1),(2,'condomínio brasil','avenida general gusmão, número 453, penha, são paulo',2);

create table apartamento (
  numero varchar(5) not null,
  tipo varchar(20) default null,
  codigo_cond int(5) default null,
  valor double(10,2) default '0.00',
  primary key (numero),
  key fk_ap_cond (codigo_cond),
  constraint fk_ap_cond foreign key (codigo_cond) references condominio (codigo)
);

insert into apartamento values ('a101','padrão',1,100000.00),('a201','padrão',1,115000.00),('a301','padrão',1,125000.00),('a401','padrão',1,135000.00),('a501','cobertura',1,150000.00),('b101','padrão',2,200000.00),('b201','padrão',2,215000.00),('b301','padrão',2,225000.00),('b401','padrão',2,235000.00),('b501','cobertura',2,250000.00);

create table garagem (
  numero int(3) not null auto_increment,
  tipo varchar(20) default null,
  numero_ap varchar(5) default null,
  primary key (numero),
  key fk_gar_apartamento (numero_ap),
  constraint fk_gar_apartamento foreign key (numero_ap) references apartamento (numero)
);

insert into garagem values (1,'padrão','a101'),(2,'padrão','a201'),(3,'padrão','a301'),(4,'padrão','a401'),(5,'coberta','a501'),(6,'padrão','b101'),(7,'padrão','b101'),(8,'padrão','b201'),(9,'padrão','b201'),(10,'padrão','b301'),(11,'padrão','b301'),(12,'padrão','b401'),(13,'padrão','b401'),(14,'coberta','b501'),(15,'coberta','b501');

create table proprietario (
  rg varchar(15) not null,
  nome varchar(80) default null,
  telefone varchar(15) default null,
  email varchar(50) default null,
  primary key (rg)
);

insert into proprietario values ('12345678-0','carlos eduardo','(11) 3256-7890','[email protected]'),('32145678-4','oswaldo lima','(11) 2314-9876','[email protected]'),('32156788-0','pedro castro','(11) 3452-8743','[email protected]'),('46536267-3','maria luiza','(11) 2345-1627','[email protected]'),('54367281-2','joana darc','(11) 4563-2315','[email protected]'),('74853928-2','benedito goes','(11) 3427-4132','[email protected]'),('76534126-4','matheus henrique','(11) 2234-1123','[email protected]'),('98635314-5','augusto silva','(11) 4122-2134','[email protected]'),('99987271-1','marcos vinicius','(11) 2124-2427','[email protected]');

create table proprietario_apartamento (
  prop_ap_id int(3) not null auto_increment,
  numero_ap varchar(5) default null,
  rg_prop varchar(15) default null,
  primary key (prop_ap_id),
  key fk_pa_apartamento (numero_ap),
  key fk_pa_proprietario (rg_prop),
  constraint fk_pa_apartamento foreign key (numero_ap) references apartamento (numero),
  constraint fk_pa_proprietario foreign key (rg_prop) references proprietario (rg)
);

insert into proprietario_apartamento values (1,'a101','12345678-0'),(2,'a201','32145678-4'),(3,'a301','32156788-0'),(4,'a401','46536267-3'),(5,'a501','54367281-2'),(6,'b101','74853928-2'),(7,'b201','76534126-4'),(8,'b301','98635314-5'),(9,'b401','99987271-1'),(10,'b501','99987271-1');

 

 

Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 1

Função 1:

CREATE DEFINER=`root`@`localhost` FUNCTION `retorne_sindico`(matricula int) RETURNS varchar(50) CHARSET latin1
BEGIN
    declare nome varchar(50);
    set nome = (select s.nome
    from sindico s
    where s.matricula = matricula);
RETURN nome;
END

Select 1:

select c.nome, c.endereco, (select retorne_sindico(c.matricula_sind)) as nomeSindico

     from condominio c

Função 2:

CREATE DEFINER=`root`@`localhost` FUNCTION `taxa_condominio`(numero_apartamento varchar(50), porcetual double) RETURNS double(10,2)
BEGIN
declare taxa double (10,2);
    set taxa = (select a.valor from apartamento a where a.numero = numero_apartamento);
    set taxa = (porcetual / 100) * taxa; 
RETURN taxa;
END

Select 2:

select a.numero, a.valor, (select taxa_condominio(a.numero, 10)) as taxa
from apartamento a 
where a.codigo_cond = 1

 

Link to post
Share on other sites
  • 0
Em 28/02/2021 em 11:52, BrunoCesarFirmino disse:

Função 1:

CREATE DEFINER=`root`@`localhost` FUNCTION `retorne_sindico`(matricula int) RETURNS varchar(50) CHARSET latin1
BEGIN
    declare nome varchar(50);
    set nome = (select s.nome
    from sindico s
    where s.matricula = matricula);
RETURN nome;
END

Select 1:

select c.nome, c.endereco, (select retorne_sindico(c.matricula_sind)) as nomeSindico

     from condominio c

Função 2:

CREATE DEFINER=`root`@`localhost` FUNCTION `taxa_condominio`(numero_apartamento varchar(50), porcetual double) RETURNS double(10,2)
BEGIN
declare taxa double (10,2);
    set taxa = (select a.valor from apartamento a where a.numero = numero_apartamento);
    set taxa = (porcetual / 100) * taxa; 
RETURN taxa;
END

Select 2:

select a.numero, a.valor, (select taxa_condominio(a.numero, 10)) as taxa
from apartamento a 
where a.codigo_cond = 1

 

Obrigada Bruno

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148955
    • Total Posts
      645010
×
×
  • Create New...