none
Store Procedure utilizando 2 tabelas RRS feed

  • 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




    terça-feira, 4 de novembro de 2008 18:52

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

    terça-feira, 4 de novembro de 2008 21:25
  • 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
    quarta-feira, 5 de novembro de 2008 00:57
  • Adriano,

     

    Os seus campos IDs são as chaves primárias e estrangeiras!!!

     

    Você deseja no mesmo select retornar os dados que se relacionam entre estas tables?

     

    quarta-feira, 5 de novembro de 2008 12:22
  • 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
    quarta-feira, 5 de novembro de 2008 18:47
  • Você tem um DBA aí e ele não pode te dar uma força?

    Aperta o cara lá, pra ele te ajudar!!!

    quarta-feira, 5 de novembro de 2008 20:04


  • Hahaha vou terq aperta ele sim rs!

    Mais so quando ele voltar! isso é só um trampo extra rs! ele ta de licença por uns dias.


    Mais valeu pela força pessoal.


    Abraços
    quinta-feira, 6 de novembro de 2008 01:42