Inquiridor
Store Procedure utilizando 2 tabelas

Pergunta
-
Pessoal,
Estou tentando criar uma proc para executar uma consulta mais não ta rolando. Não mecho com banco faz tempo rs! Vcs poderiam me ajudar!
Tabela 1
@confronto varchar(100) = null,
@qtd int = null,
@data datetime = null,
@valor money = null,
Tabela 2
@capacidade int = null,
@cep char(8) = null,
@endereco varchar(100) = null,
@estado varchar(50) = null,
@cidade char(2) = null,
@bairro varchar(50) = null
Criei essa abaixo. Não sei como rolou rs! Mais utilizando 2 tabelas nem faço ideia. Acho que tenho que utilizar join!
- Pessoal essa ta ok! se sergir de consulta para alguem!
***************************************************************************************************************************************************
Create procedure pr_pesquisarCliente
( @nome varchar(100) = null,
@email varchar(50) = null,
@cep char(8) = null,
@estado char(2) = null,
@cidade varchar(50) = null,
@bairro varchar(50) = null,
@rg varchar(15) = null,
@cpf varchar(11) = null,
@ce varchar(15) = null )
as
select idCliente, nome, email, telRes, telCom, telCel,
cep, endereco, numero, complemento, bairro,
estado, cidade, rg, cpf, ce, dtNasc, senha
from cliente
where (@nome is null or nome like '%' + @nome + '%')
AND (@email is null or email like '%' + @email + '%' )
AND (@cep is null or cep like '%' + @cep + '%')
AND (@estado is null or estado like '%' + @estado + '%')
AND (@cidade is null or cidade like '%' + @cidade + '%')
AND (@bairro is null or bairro like '%' + @bairro + '%')
AND (@rg is null or rg like '%' + @rg + '%')
AND (@cpf is null or cpf like '%' + @cpf + '%')
AND (@ce is null or ce like '%' + @ce + '%')
Abraço
Adriano Matarazo
Todas as Respostas
-
Boa Noite,
Provavelmente será necessário usar um JOIN. Poste a estrutura das tabelas utilizadas (as tabelas passadas não condizem com o exemplo da SP) e poderemos sugerir alguma alternativa.
O tipo de construção utilizado fará um verdadeiro estrago no desempenho do seu banco de dados. Construções do tipo (@nome is null or nome like '%' + @nome + '%') ignoram a presença de qualquer índice e sempre irão optar por um TABLE SCAN. Para tabelas pequenas é aceitável, mas para grandes quantidades é um problema.
[ ]s,
Gustavo
-
Boa Noite Gustavo,
Obrigado pela força. Segue abaixo as tabelas relacionadas.
tabEstadio
idEstadio - int
nome - Varchar (100)
capacidade - int
endereco - varchar (100)
bairro - varchar (50)
cep - char (8)
cidade - varchar (50)
estado - char (2)
numero - int
tabEvento
idEvento - int
confronto - varchar (100)
qtd - int
data - datetime
valor - valor
idTipoEvento - int
idEstadio - int
tabTipoEvento
idTipoEvento - int
nome - varchar (100)
A Aplicação somente possui o cadastro de Evento que inclui os dados nas tabelas. E na consulta de Evento eu estou tentando consultar os items confronto, data, valor, qtd, estadio, capacidade, endereco, cep, bairro, estado, cidade, tipo de evento e todos os items.
Desde já agradeço sua atenção.
[ ]s,
Adriano Matarazo -
-
Boa Tarde Junior,
Isso msm os ID's são as chaves primárias das suas respectivas tables. Somente na table "tabEvento" é incluido a FK !
tabEstadio
( PK ) idEstadio
tabEvento
( PK ) idEvento
( FK ) idTipoEvento
( FK ) idEstadio
tabTipoEvento
( PK ) idTipoEvento
Estava analisando as tabelas e eu acho mais facil. Incluir na tabEvento os items da tabEstadio pois no cadastro de Evento ele ira cadastrar todos os dados das 2 tables.
Preciso averiguar com o DBA.
[]'s
Adriano Matarazo -
-