Skip to content

Instantly share code, notes, and snippets.

@JotaKyo
Created December 2, 2012 18:11
Show Gist options
  • Save JotaKyo/4190230 to your computer and use it in GitHub Desktop.
Save JotaKyo/4190230 to your computer and use it in GitHub Desktop.
Projeto Banco de Dados
/* Projeto Banco de Dados
2º Unidade
*/
CREATE database EmpresaXYZ
use EmpresaXYZ
-- Deleta as tabelas e sua restrições, funções permanencem intactas, execute 2 vezes, obs: dropar as views primeiros
DECLARE @TableName NVARCHAR(MAX)
DECLARE @ConstraintName NVARCHAR(MAX)
DECLARE Constraints CURSOR FOR
SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
OPEN Constraints
FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER TABLE [' + @TableName + '] DROP CONSTRAINT [' + @ConstraintName + ']')
FETCH NEXT FROM Constraints INTO @TableName, @ConstraintName
END
CLOSE Constraints
DEALLOCATE Constraints
DECLARE Tables CURSOR FOR
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
OPEN Tables
FETCH NEXT FROM Tables INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('DROP TABLE [' + @TableName + ']')
FETCH NEXT FROM Tables INTO @TableName
END
CLOSE Tables
DEALLOCATE Tables
--
-- Tabelas e suas respectivas restrições
CREATE TABLE estado(
id int identity(1,1),
sigla char(2) NOT NULL,
nome varchar(30) NOT NULL,
CONSTRAINT pk_estado PRIMARY KEY (id)
)
CREATE TABLE cidade(
id int identity(1,1),
nome varchar(30) NOT NULL,
idEstado int NOT NULL,
CONSTRAINT pk_cidade PRIMARY KEY (id),
CONSTRAINT fk_cidade FOREIGN KEY (idEstado) REFERENCES estado(id)
)
CREATE TABLE tipologradouro(
idTipoLogradouro varchar(3) NOT NULL,
tipo varchar(30) NOT NULL,
CONSTRAINT pk_tipologradouro PRIMARY KEY (idTipoLogradouro)
)
CREATE TABLE endereco(
idEndereco int identity(1,1),
CEP int NOT NULL,
idCidade int NOT NULL,
idTipoLogradouro varchar(3) NOT NULL,
CONSTRAINT pk_endereco PRIMARY KEY (idEndereco),
CONSTRAINT fk_endereco FOREIGN KEY (idCidade) REFERENCES cidade(id),
CONSTRAINT fk2_endereco FOREIGN KEY (idTipoLogradouro) REFERENCES tipologradouro(idTipoLogradouro)
)
CREATE TABLE pessoa(
nome varchar(100) NOT NULL,
email varchar(100) NOT NULL,
CPF varchar(20) NOT NULL,
RG varchar(20) NOT NULL,
orgaomissorRG varchar(50) NOT NULL,
senha varchar(10) DEFAULT '123456',
idEndereco int NOT NULL,
CONSTRAINT pk_pessoa PRIMARY KEY(CPF),
CONSTRAINT fk2_pessoa FOREIGN KEY(idEndereco) REFERENCES endereco(idEndereco),
CHECK (email LIKE '%_@_%_.__%'),
CHECK (CPF LIKE '___.___.___-__')
)
create table tb_rg(
RG varchar(20) not null,
CPF varchar(20) not null,
CONSTRAINT fk_rg FOREIGN KEY(CPF) REFERENCES pessoa(CPF)
)
CREATE TABLE telefone(
numero varchar(9) NOT NULL,
tipo char(1) DEFAULT 'F',
CPF varchar(20) NOT NULL,
CONSTRAINT pk_telefone PRIMARY KEY(numero),
CONSTRAINT fk_telefone FOREIGN KEY(CPF) REFERENCES pessoa(CPF),
CHECK (tipo IN ('F', 'M') )
)
CREATE TABLE empresa(
nome varchar(50) NOT NULL,
razaosocial varchar(100) NOT NULL,
idEndereco int NOT NULL,
CNPJ varchar(20) NOT NULL,
email varchar(50) NOT NULL,
idResponsavel varchar(20) NOT NULL,
CONSTRAINT pk_empresa PRIMARY KEY(CNPJ),
CONSTRAINT fk_empresa FOREIGN KEY(idEndereco) REFERENCES endereco(idEndereco),
CONSTRAINT fk2_empresa FOREIGN KEY(idResponsavel) REFERENCES pessoa(CPF),
CHECK (email LIKE '%_@_%_.__%'),
CHECK (CNPJ LIKE '__.___.___/____-__')
)
create table tbr_pessoa_empresa(
id_tbr_pessoa_empresa int identity(1,1)
,CPF varchar(20) NOT NULL
,CNPJ varchar(20) NOT NULL
,CONSTRAINT pk_tbr_pessoa_empresa PRIMARY KEY(id_tbr_pessoa_empresa)
,CONSTRAINT fk1_tbr_pessoa_empresa FOREIGN KEY(CPF) REFERENCES pessoa(CPF)
,CONSTRAINT fk2_tbr_pessoa_empresa FOREIGN KEY(CNPJ) REFERENCES empresa(CNPJ)
)
CREATE TABLE projeto(
situacao varchar(15) DEFAULT('Em cadastro'),
numero varchar(17) NOT NULL,
CNPJ varchar(20) NOT NULL,
CPF varchar(20) NOT NULL,
tipo char(2) NOT NULL,
inicio datetime NOT NULL,
fim datetime NOT NULL,
CONSTRAINT pk_projeto PRIMARY KEY(numero),
CONSTRAINT fk_projeto FOREIGN KEY(CNPJ) REFERENCES empresa(CNPJ),
CONSTRAINT fk2_projeto FOREIGN KEY(CPF) REFERENCES pessoa(CPF),
constraint ck_data_projeto check (inicio < fim),
constraint ck_situacao_projeto CHECK (situacao IN ('Em Cadastro', 'Ativo', 'Cancelado'))
)
create table tbr_pessoa_projeto(
id_tbr_pessoa_projeto int identity(1,1)
,CPF varchar(20) NOT NULL
,numero varchar(17) not null
,CONSTRAINT fk1_pessoa_projeto FOREIGN KEY(CPF) REFERENCES pessoa(CPF)
,CONSTRAINT fk2_pessoa_projeto FOREIGN KEY(numero) REFERENCES projeto(numero)
)
CREATE TABLE meta(
id int identity(1,1),
numero int NOT NULL,
projeto varchar(17) NOT NULL,
CONSTRAINT pk_meta PRIMARY KEY(id),
CONSTRAINT fk_meta FOREIGN KEY(projeto) REFERENCES projeto(numero),
)
CREATE TABLE etapa(
id int identity(1,1),
numero int NOT NULL,
meta int NOT NULL,
dataPrevista datetime NOT NULL,
unidadeControle varchar(5) DEFAULT ('%'),
Programado numeric(5,2) NOT NULL,
Executado numeric(5,2) NOT NULL,
CONSTRAINT pk_etapa PRIMARY KEY(id),
CONSTRAINT fk_etapa FOREIGN KEY(meta) REFERENCES meta(id),
)
CREATE TABLE recursoFinanceiro(
id int identity(1,1),
valorDisponivel numeric(8,2) NOT NULL,
qtParcelas int NOT NULL,
financiador varchar(20) NOT NULL,
tipo char(1) NOT NULL,
etapa int NOT NULL,
CHECK (tipo IN('P', 'T', 'F', 'B')),
CONSTRAINT pk_recursoFinanceiro PRIMARY KEY(id),
CONSTRAINT fk_recursoFinanceiro FOREIGN KEY(financiador) REFERENCES empresa(CNPJ),
CONSTRAINT fk2_recursoFinanceiro FOREIGN KEY(etapa) REFERENCES etapa(id),
)
CREATE TABLE docPagamento(
id int identity(1,1),
numero varchar(50) NOT NULL,
valor numeric(8,2) NOT NULL,
data datetime NOT NULL,
responsavelCPF varchar(20),
responsavelCNPJ varchar(20),
recursoFinanceiro int,
CONSTRAINT pk_docPagamento PRIMARY KEY(id),
CONSTRAINT fk_docPagamento FOREIGN KEY(recursoFinanceiro) REFERENCES recursoFinanceiro(id),
CONSTRAINT fk2_docPagamento FOREIGN KEY(responsavelCPF) REFERENCES pessoa(CPF),
CONSTRAINT fk3_docPagamento FOREIGN KEY(responsavelCNPJ) REFERENCES empresa(CNPJ),
)
CREATE TABLE tituloCredito(
nome varchar(15) DEFAULT ('Nota Fiscal'),
sigla char(3) DEFAULT ('NF'),
CONSTRAINT pk_tituloCredito PRIMARY KEY(sigla),
)
CREATE TABLE despesas(
id int identity(1,1),
nome varchar(50) NOT NULL,
identificacao int NOT NULL,
docPagamento int NOT NULL,
tituloCredito char(3) DEFAULT ('NF'),
numeroCredito int,
etapa int NOT NULL,
numero varchar(17) NOT NULL,
CONSTRAINT pk_despesas PRIMARY KEY(id),
CONSTRAINT fk_despesas FOREIGN KEY(docPagamento) REFERENCES docPagamento(id),
CONSTRAINT fk2_despesas FOREIGN KEY(tituloCredito) REFERENCES tituloCredito(sigla),
CONSTRAINT fk3_despesas FOREIGN KEY(etapa) REFERENCES etapa(id),
CONSTRAINT fk4_despesas FOREIGN KEY(numero) REFERENCES projeto(numero)
)
-- Tabelas terminam aqui
-- Zona de testes
--
CREATE TRIGGER TRG_ativo_para_emcadastro on projeto
after update
as begin
declare
@situacaoAntiga varchar(15),
@situacaoNova varchar(15),
@numero varchar(17)
select @situacaoAntiga = deleted.situacao,@situacaoNova = projeto.situacao,@numero = projeto.numero from deleted join
projeto on projeto.numero = deleted.numero
if(@situacaoAntiga = 'Ativo' and @situacaoNova = 'Em Cadastro')begin
rollback transaction
raiserror('Projeto ativo não pode voltar para a fase em cadastro',16,1)
end
end
CREATE TRIGGER TRG_dataPrev_maiorQue_fim on etapa
after insert,update
as
begin
declare
@dataPrevista datetime
,@dataFimProjeto datetime
select @dataPrevista = dataPrevista, @dataFimProjeto = projeto.fim from Etapa join
Meta on etapa.meta = meta.id join Projeto on projeto.numero = meta.projeto
if(@dataPrevista > @dataFimProjeto )begin
rollback transaction
raiserror('Data prevista não pode ser maior que a data final do projeto',16,1)
end
end
CREATE procedure ativarProjeto(@numeroProjeto varchar(17))
AS
begin
if (select sum(Programado) from etapa join meta
on etapa.meta = meta.id
where meta.projeto = @numeroProjeto) = 100.00
begin
if (select count(etapa.id)
from etapa
join meta on etapa.meta = meta.id
join projeto on meta.projeto = projeto.numero
where etapa.dataPrevista > projeto.fim AND meta.projeto = @numeroProjeto) = 0
begin
update projeto set situacao = 'Ativo' where numero = @numeroProjeto
return
end
raiserror('Projeto não pode ser ativado',16,1)
end
raiserror('Projeto não pode ser ativado',16,1)
end
CREATE Function gerarnumero(@CNPJ varchar(20), @CPF varchar(20), @tipo varchar(2), @data datetime) returns varchar(17)
AS
begin
return (SUBSTRING(@CNPJ, 1, 2) + SUBSTRING(@CNPJ, 4, 2) + '.' + SUBSTRING(@CPF, 1, 3) + SUBSTRING(@CPF, 5, 1) + '-' + @tipo +'/'+ CAST(year(@data) AS char(4)))
end
CREATE FUNCTION funcValCPF(@CPF VARCHAR(11))
RETURNS VARCHAR(17)
AS
BEGIN
DECLARE @INDICE INT,
@SOMA INT,
@DIG1 INT,
@DIG2 INT,
@CPF_TEMP VARCHAR(11),
@DIGITOS_IGUAIS CHAR(1),
@RESULTADO CHAR(1);
SET @RESULTADO = 'N'
SET @CPF_TEMP = SUBSTRING(@CPF,1,1)
SET @INDICE = 1
SET @DIGITOS_IGUAIS = 'S'
WHILE (@INDICE <= 11) BEGIN IF SUBSTRING(@CPF,@INDICE,1) <> @CPF_TEMP
SET @DIGITOS_IGUAIS = 'N'
SET @INDICE = @INDICE + 1
END;
--Caso os digitos não sejão todos iguais Começo o calculo do digitos
IF @DIGITOS_IGUAIS = 'N'
BEGIN
--Cálculo do 1º dígito
SET @SOMA = 0
SET @INDICE = 1
WHILE (@INDICE <= 9) BEGIN SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (11 - @INDICE); SET @INDICE = @INDICE + 1 END SET @DIG1 = 11 - (@SOMA % 11) IF @DIG1 > 9
SET @DIG1 = 0;
-- Cálculo do 2º dígito }
SET @SOMA = 0
SET @INDICE = 1
WHILE (@INDICE <= 10) BEGIN SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (12 - @INDICE); SET @INDICE = @INDICE + 1 END SET @DIG2 = 11 - (@SOMA % 11) IF @DIG2 > 9
SET @DIG2 = 0;
-- Validando
IF (@DIG1 = SUBSTRING(@CPF,LEN(@CPF)-1,1)) AND (@DIG2 = SUBSTRING(@CPF,LEN(@CPF),1))
return (substring(@CPF,1,3) + '.' + substring(@CPF,4,3) + '.' +substring(@CPF,7,3) + '-' + substring(@CPF,10,2))
ELSE
return 0
END
return 0
END
CREATE FUNCTION funcValCNPJ(@CNPJ VARCHAR(14))
RETURNS VARCHAR(18)
AS
BEGIN
DECLARE @INDICE INT, @SOMA INT, @DIG1 INT, @DIG2 INT, @VAR1 INT, @VAR2 INT, @RESULTADO CHAR(1)
SET @SOMA = 0
SET @INDICE = 1
SET @RESULTADO = 'N'
SET @VAR1 = 5
WHILE (@INDICE <= 4)
BEGIN
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR1
SET @INDICE = @INDICE + 1
SET @VAR1 = @VAR1 - 1
END
SET @VAR2 = 9
WHILE (@INDICE <= 12)
BEGIN
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR2
SET @INDICE = @INDICE + 1
SET @VAR2 = @VAR2 - 1
END
SET @DIG1 = (@soma % 11)
IF @DIG1 < 2
SET @DIG1 = 0;
ELSE
SET @DIG1 = 11 - (@soma % 11);
SET @INDICE = 1
SET @SOMA = 0
SET @VAR1 = 6
SET @RESULTADO = 'N'
WHILE (@INDICE <= 5)
BEGIN
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR1
SET @INDICE = @INDICE + 1
SET @VAR1 = @VAR1 - 1
END
SET @VAR2 = 9
WHILE (@INDICE <= 13)
BEGIN
SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CNPJ,@INDICE,1)) * @VAR2
SET @INDICE = @INDICE + 1
SET @VAR2 = @VAR2 - 1
END
SET @DIG2 = (@soma % 11)
IF @DIG2 < 2
SET @DIG2 = 0;
ELSE
SET @DIG2 = 11 - (@soma % 11);
IF (@DIG1 = SUBSTRING(@CNPJ,LEN(@CNPJ)-1,1)) AND (@DIG2 = SUBSTRING(@CNPJ,LEN(@CNPJ),1))
RETURN (substring(@CNPJ,1,2) + '.' + substring(@CNPJ,3,3) + '.' +substring(@CNPJ,6,3) + '/' + substring(@CNPJ,9,4) + '-' + substring(@CNPJ,13,2))
ELSE
SET @RESULTADO = 0
RETURN @RESULTADO
END
-- Leia mais em: Validando CNPJ no SQL Server http://www.devmedia.com.br/validando-cnpj-no-sql-server/9289#ixzz2EJpXH62c
-- Leia mais em: Função para validar CPF no SQL Server http://www.devmedia.com.br/funcao-para-validar-cpf-no-sql-server/2723#ixzz2Dx0CyLwl
-- CARGAS INICIAIS
INSERT INTO Estado values
('SE', 'Sergipe'),
('BA', 'Bahia'),
('PE', 'Pernambuco'),
('AL', 'Alagoas'),
('CE', 'Ceará'),
('RN', 'Rio Grande do Norte')
INSERT INTO Cidade values
('Aracaju', 1),
('Propriá', 1),
('Itabaiana', 1),
('São Cristóvão', 1),
('Salvador', 2),
('Feira de Santana', 2)
INSERT INTO TituloCredito values
('Nota Fiscal', 'NF'),
('Recibo', 'REC'),
('Cupom Fiscal', 'CF')
INSERT INTO TipoLogradouro values
('AER', 'Aeroporto'),
('ROD', 'Rodovia'),
('PRQ', 'Parque'),
('BL', 'Bloco'),
('AV', 'Avenida')
INSERT INTO Endereco values
(49035530, 1, 'AV'),
(51524584, 2, 'AV'),
(95152943, 4, 'ROD'),
(58168243, 1, 'BL'),
(10583928, 1, 'ROD'),
(35812385, 2, 'AER')
-- responsaveis
INSERT INTO Pessoa(nome, email, CPF, RG, orgaomissorRG, idEndereco) values
('Lucas de Oliveira Machado', 'lucas_rev@hotmail.com', dbo.funcValCPF('04921441502'), '32986777', 'Secretaria de Segurança Pública', 1),
('Pessoa2', 'pes2@email.com', dbo.funcValCPF('78352348825'), '12345678', 'Secretaria de Segurança Pública', 2),
('Pessoa3', 'pes3@email.com', dbo.funcValCPF('45019835404'), '32986777', 'Secretaria de Segurança Pública', 4),
('Pessoa4', 'pes4@email.com', dbo.funcValCPF('01088208746'), '32986777', 'Secretaria de Segurança Pública', 3),
('Pessoa5', 'pes5@email.com', dbo.funcValCPF('42175150496'), '32986777', 'Secretaria de Segurança Pública', 5)
-- clientes
INSERT INTO Empresa(nome, razaosocial, idEndereco, CNPJ, email, idResponsavel) values
('Empresa1', 'Servir de Exemplo para o script', 1, dbo.funcValCNPJ('56137579000193'), 'emp1@email.com', '049.214.415-02'),
('Empresa2', 'Servir de Exemplo2 para o script', 2, dbo.funcValCNPJ('09304620000199'), 'emp1@email.com', '783.523.488-25'),
('Empresa3', 'Servir de Exemplo3 para o script', 3, dbo.funcValCNPJ('78300139000148'), 'emp1@email.com', '010.882.087-46')
-- 2 projetos ativos ,cada um com 2 metas, cada meta com 3 etapas
-- Primeiro cadastrar os projetos
-- 1º Projeto
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime
set @CNPJ = '56.137.579/0001-93'
set @CPF = '049.214.415-02'
set @tipo = 'TE'
set @inicio = '01/01/2013'
set @fim = '01/12/2013'
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio)
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim)
-- 2º Projeto
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime
set @CNPJ = '09.304.620/0001-99'
set @CPF = '783.523.488-25'
set @tipo = 'ET'
set @inicio = '01/01/2013'
set @fim = '01/12/2013'
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio)
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim)
-- 3º Projeto
declare @numero varchar(30), @CNPJ varchar(20), @CPF varchar(20), @tipo char(2), @inicio datetime, @fim datetime
set @CNPJ = '78.300.139/0001-48'
set @CPF = '010.882.087-46'
set @tipo = 'TT'
set @inicio = '01/01/2013'
set @fim = '01/12/2013'
set @numero = dbo.gerarnumero(@CNPJ, @CPF, @tipo, @inicio)
INSERT INTO Projeto(numero, CNPJ, CPF, tipo, inicio, fim) values
(@numero, @CNPJ, @CPF, @tipo, @inicio, @fim)
-- inserir metas
INSERT INTO Meta(numero, projeto) values
(1, '0930.7835-ET/2013'),
(2, '0930.7835-ET/2013'),
(1, '5613.0492-TE/2013'),
(2, '5613.0492-TE/2013')
-- inserir etapas
INSERT INTO Etapa(numero, meta, dataPrevista, Programado, Executado) values
(1, 1, '01/06/2013', 20, 20),
(2, 1, '01/06/2013', 20, 20),
(3, 1, '01/06/2013', 20, 20),
(1, 2, '01/06/2013', 20, 20),
(2, 2, '01/06/2013', 10, 10),
(3, 2, '01/06/2013', 10, 10),
(1, 3, '01/06/2013', 20, 20),
(2, 3, '01/06/2013', 20, 20),
(3, 3, '01/06/2013', 20, 20),
(1, 4, '01/06/2013', 20, 20),
(2, 4, '01/06/2013', 10, 10),
(3, 4, '01/06/2013', 10, 10)
-- ativar 2 projetos
select * from projeto
execute dbo.ativarProjeto @numeroProjeto = '0930.7835-ET/2013';
execute dbo.ativarProjeto @numeroProjeto = '5613.0492-TE/2013';
execute dbo.ativarProjeto @numeroProjeto = '7830.0108-TT/2013'; -- Vai gerar mensagem de erro dizendo que o projeto não pode ser ativado
-- inserir 5 debitos por projeto, sendo 1 parcial
INSERT INTO recursoFinanceiro(valorDisponivel, qtParcelas, financiador, tipo, etapa) values -- A empresa(cliente) que não teve projeto ativado vai financiar as outras
(500.00, 1, '78.300.139/0001-48', 'T', 1),
(300.00, 1, '78.300.139/0001-48', 'T', 2),
(450.00, 1, '78.300.139/0001-48', 'T', 3),
(1.00, 1, '78.300.139/0001-48', 'P', 4),
(50.00, 4, '78.300.139/0001-48', 'T', 5),
(600.00, 1, '78.300.139/0001-48', 'T', 6),
(20.00, 1, '78.300.139/0001-48', 'B', 7),
(0.50, 8, '78.300.139/0001-48', 'T', 8)
INSERT INTO DocPagamento(numero, valor, data, responsavelCPF, recursoFinanceiro) values
('5128589', 350, '05/03/2013', '421.751.504-96', 1),
('5235642', 200, '05/03/2013', '421.751.504-96', 2),
('5624623', 70, '05/03/2013', '421.751.504-96', 3),
('1235125', 1, '05/03/2013', '421.751.504-96', 4)
INSERT INTO DocPagamento(numero, valor, data, responsavelCNPJ, recursoFinanceiro) values
('7432462', 35, '05/03/2013', '56.137.579/0001-93', 5),
('6236451', 480, '05/03/2013', '56.137.579/0001-93', 6),
('1045683', 5, '05/03/2013', '09.304.620/0001-99', 7),
('2346125', 0.2, '05/03/2013', '09.304.620/0001-99', 8)
INSERT INTO DocPagamento(numero, valor, data, responsavelCNPJ) values -- parciais
('6341254', 5, '05/03/2013', '56.137.579/0001-93'),
('1246245', 5, '05/03/2013', '09.304.620/0001-99')
INSERT INTO Despesas(nome, identificacao, docPagamento, tituloCredito, etapa, numero) values
('Debito1', 10, 1, 'REC', 1, '0930.7835-ET/2013'),
('Debito2', 20, 2, 'REC', 2, '0930.7835-ET/2013'),
('Debito3', 30, 3, 'REC', 3, '0930.7835-ET/2013'),
('Debito4', 40, 4, 'REC', 4, '5613.0492-TE/2013'),
('Debito5', 50, 5, 'REC', 5, '5613.0492-TE/2013'),
('Debito6', 60, 6, 'REC', 6, '5613.0492-TE/2013'),
('Debito7', 70, 7, 'REC', 7, '0930.7835-ET/2013'),
('Debito8', 80, 8, 'REC', 8, '0930.7835-ET/2013'),
('Debito9', 90, 9, 'REC', 9, '0930.7835-ET/2013'), -- parcial
('Debito10', 100, 10, 'REC', 10, '5613.0492-TE/2013') -- parcial
-- AQUI TERMINAM OS INSERTS
-- NESTA PARTE COMEÇAM AS VIEWS
CREATE VIEW dadosFinanceirosSimples -- falta algumas colunas
as
SELECT empresa.nome as Cliente,
projeto.numero as Projeto,
docpagamento.valor as Gastos,
projeto.inicio as DataInicio,
projeto.fim as DataFim
FROM projeto
JOIN empresa ON projeto.CNPJ = empresa.CNPJ
JOIN meta ON meta.projeto = projeto.numero
JOIN etapa ON meta.id = etapa.meta
LEFT JOIN recursoFinanceiro ON etapa.id = recursoFinanceiro.etapa
LEFT JOIN despesas ON despesas.etapa = etapa.id
LEFT JOIN docPagamento ON despesas.docPagamento = docPagamento.id
CREATE VIEW dadosFinanceirosCompleto -- falta a coluna recursos
as
SELECT empresa.nome as Cliente,
projeto.numero as Projeto,
docpagamento.valor as Gastos,
meta.numero as Meta,
recursoFinanceiro.valorDisponivel as ValorDisponivel
FROM projeto
JOIN empresa ON projeto.CNPJ = empresa.CNPJ
JOIN meta ON meta.projeto = projeto.numero
JOIN etapa ON meta.id = etapa.meta
LEFT JOIN recursoFinanceiro ON etapa.id = recursoFinanceiro.etapa
LEFT JOIN despesas ON despesas.etapa = etapa.id
LEFT JOIN docPagamento ON despesas.docPagamento = docPagamento.id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment