none
Select de acordo com um parametro RRS feed

  • Pergunta

  • Boa tarde,

    Tenho uma consulta que receberá 03 parametros via aplicação web, como faço para consultar e retornar de acordo com o que foi passado?

    por exsemplo

    Se o Código for igual A, retorno os campos 1,2,3,4 

    Se o Código for igual B, retorno os campos ,5,6

    Se o Código for igual a C, retorno o campo 7

    como faço essa condição no SELECT ?


    • Editado twister8 segunda-feira, 2 de maio de 2016 20:15
    segunda-feira, 2 de maio de 2016 20:11

Respostas

  • Pelo que eu tinha entendido dos posts anteriores os parâmetros seriam comparados com valores fixos, mas pelo que você postou acima parece que os parâmetros devem ser comparados com os valores do campos.

    É isso mesmo? Se é, e se o parâmetro for igual ao valor do campoa de uma linha e igual ao campob de outra linha?


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Marcos SJ quinta-feira, 5 de maio de 2016 19:13
    terça-feira, 3 de maio de 2016 12:47

Todas as Respostas

  • Boa tarde

    Na tabela consultada, acredito que tenha o campo Código, sendo assim o select seria

    declare @Codigo int = 0

    SELECT CAMPOS_DESEJADOS FROM SUA_TABELA WHERE CÓDIGO = @Codigo

    para melhor entendimento, informa como está trazendo isso na aplicação, se é um dropdown, grid, etc..

    Abraço

    segunda-feira, 2 de maio de 2016 20:37
  • Desde já obrigado pela ajuda, veja se consegui ser mais claro no meu problema.

    Tabela1
    Tenho uma tabela de Metricas, com todos os valores como:
    Comissao, Valor NF, Total e nessa tabela possuo o campo Codigo

    Tabela2
    Na outra tabela eu tenho os dados desse Codigo que são informações 
    referentes a localização como por exemplo cidade, estado. nessa 
    tabela eu possuo o campo Codigo e mais 3 codigos codigo1, codigo2,
    codigo3

    O inner join da Tabela1 e Tabela 2 esta sendo pelo campo Codigo

    Por exemplo o usuario entrará na aplicação com 

    A data, um codigo e o tipo de codigo 

    201501 0101 Tipo1

    De acordo com o codigo e o tipo de Codigo eu retorno alguns campos da 
    tabela 2.

    Nesse exemplo

    0101 Tipo1

    eu preciso retornar colunas 1,2,3

    se for

    0102 Tipo2

    eu preciso retornor colunas 4,5

    eu pensei em algo

    Case Codigo = @VariavelCodigo --Exemplo 0102 and Tipo = @Tipo

    select campo1,campo2,campo3

    Case Codigo = VariavelCodigo --Exemplo 0102 and Tipo = @Tipo

    select campo4,campo5



    • Editado twister8 segunda-feira, 2 de maio de 2016 20:55
    segunda-feira, 2 de maio de 2016 20:45
  • ao entrar na aplicação são 3 campos digitáveis para ele colocar os 3 campos? que são referente ao codigo 1, codigo 2 e codigo 3?

    e poderia realizar um inner join

    select T1*, T2*  from tabela1 as T1 inner join tabela2 as T2 on T1.codigotabela1 = T2.codigotabela2

    where T2.codigo1 = parametro AND T2.codigo2 = parametro2 AND T2.codigo3 = parametro3

    dessa forma vai trazer todos registros da Tabela1 onde o codigo for igual da tabela2 dentro dos parametros dos campos passados ou pode fazer dessa forma também, que traz se passar os 3 parametros ou não.

    select T1*, T2*  from tabela1 as T1 inner join tabela2 as T2 on T1.codigotabela1 = T2.codigotabela2

    where ((T2.codigo1 = parametro) or (T2.codigo2 = parametro2) or (T2.codigo3 = parametro3))

    Abraço

     

    select T1*, T2*  from tabela1 as T1 inner join tabela2 as T2 on T1.codigotabela1 = T2.codigotabela2

    where T2.codigo1 = parametro AND T2.codigo2 = parametro2 AND T2.codigo3 = parametro3

    select T1*, T2*  from tabela1 as T1 inner join tabela2 as T2 on T1.codigotabela1 = T2.codigotabela2

    where T2.codigo1 = parametro AND T2.codigo2 = parametro2 AND T2.codigo3 = parametro3

    segunda-feira, 2 de maio de 2016 20:56
  • Boa noite,

    Como a quantidade de campos (e talvez o tipo de dados dos mesmos) a serem retornados pela query varia conforme os parâmetros, acredito que seria melhor você montar a query na aplicação conforme os valores informados pelo usuário.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 2 de maio de 2016 21:38
  • No caso eu realmente preciso fazer esse retorno no SQL mesmo, a aplicação só irá fornecer os parametros, segue outro exemplo para tentar explicar melhor.

    Exemplo

    declare @variavel nvarchar(50)

    Select 
             campoa, 
             campob, 
             campoc, 
             campod, 
             campoe,

    from tabela

    eu preciso que se:

    @variaval = campoa 
    retorne: select campoa, campob from tabela

    se 

    @variavel = campob
    retorne: select campob, campoc, campod from tabela

    terça-feira, 3 de maio de 2016 00:59
  • Pelo que eu tinha entendido dos posts anteriores os parâmetros seriam comparados com valores fixos, mas pelo que você postou acima parece que os parâmetros devem ser comparados com os valores do campos.

    É isso mesmo? Se é, e se o parâmetro for igual ao valor do campoa de uma linha e igual ao campob de outra linha?


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Marcos SJ quinta-feira, 5 de maio de 2016 19:13
    terça-feira, 3 de maio de 2016 12:47