none
sem saida RRS feed

  • Pergunta

  • preciso fazer uma consulta sobre isso:

    id | key | valor

    40 | path | 50

    50 | file | xxx.jpg

    que me retorno isso:

    id | valor

    40 | xxx.jpg


    • Editado Kasulo sexta-feira, 10 de fevereiro de 2012 03:25
    sexta-feira, 10 de fevereiro de 2012 03:24

Respostas



  • Kasulo,





    O que voce precisa é de um SelfJoin com filtro de numerico,
    exemplo:



    DECLARE @Tab TABLE



    (



          IdINT,



          [Key]VARCHAR(5),



          ValorVARCHAR(100)



    )





    INSERT INTO @Tab VALUES



    (40, 'Path', '50'),



    (50, 'File', 'Foto1.jpg'),



    (60, 'Path', '70'),



    (70, 'File', 'Foto2.jpg')





    SELECT a.Id, b.Valor



    FROM @Tab a



    INNER JOIN @Tab b



          ON (a.Valor = b.Id AND ISNUMERIC(a.Valor) = 1)



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com


    sexta-feira, 10 de fevereiro de 2012 17:17
    Moderador


  • Kasulo,





    Assim:



    DECLARE @Tab TABLE



    (



          IdINT,



          [Key]VARCHAR(5),



          ValorVARCHAR(100)



    )





    INSERT INTO @Tab VALUES



    (40, 'Path', '50'),



    (50, 'File', 'Foto1.jpg'),



    (60, 'Path', '70'),



    (70, 'File', 'Foto2.jpg'),



    (70, 'File', 'Foto3.jpg')





    SELECT a.Id, b.[Key], b.Valor



    FROM @Tab a



    INNER JOIN @Tab b



          ON (a.Valor=b.IdANDISNUMERIC(a.Valor)=1)



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 13 de fevereiro de 2012 10:22
    Moderador

Todas as Respostas

  • Kasulo, bom dia. Qual a relação entre as duas linhas para vc mostrar numa linha só?

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    sexta-feira, 10 de fevereiro de 2012 10:51
  • Kasulo,

    Para que você consiga realizar isso, será necessário que exista algum campo entre estas tabelas que apresente um valor em comum, como por exemplo, algum ID ou Código.

    Você poderia apresentar a estrutura das suas tabelas?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 10 de fevereiro de 2012 12:07
  • Bom dia, Eduardo e Junior

    a linha que tem o "path" tras o ID da linha que tem o "file", no campo valor.

    sexta-feira, 10 de fevereiro de 2012 12:41
  • Kasulo,

    Então, existe o File e Path, sendo o que Path pode ser utilizado por vários arquivos, neste caso, precisamos pegar o ID do File para juntar com o seu path.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 10 de fevereiro de 2012 12:43
  • exatamente... e como fazer isso usando soh o sql?
    sexta-feira, 10 de fevereiro de 2012 13:01
  • Tente assim: create table Teste (id int, [key] varchar(10), valor varchar(10)) insert into Teste values (40,'path',50) insert into Teste values (50,'file','xxx.jpg') select a.id,b.valor from Teste a inner join Teste b on a.valor = convert(varchar(10),b.id)

    Paulo Katsuo Katayama Junior

    sexta-feira, 10 de fevereiro de 2012 16:43
  • Boa tarde Kasulo,

    Teste da seguinte maneira:

    select id, valor from tabela where valor=id


    Rodrigo Ataíde.

    sexta-feira, 10 de fevereiro de 2012 17:00
  • Olá Rodrigo...

    Nao retorna nada, pois os valores testados nao estao na mesma linha


    • Editado Kasulo sexta-feira, 10 de fevereiro de 2012 17:11
    sexta-feira, 10 de fevereiro de 2012 17:11


  • Kasulo,





    O que voce precisa é de um SelfJoin com filtro de numerico,
    exemplo:



    DECLARE @Tab TABLE



    (



          IdINT,



          [Key]VARCHAR(5),



          ValorVARCHAR(100)



    )





    INSERT INTO @Tab VALUES



    (40, 'Path', '50'),



    (50, 'File', 'Foto1.jpg'),



    (60, 'Path', '70'),



    (70, 'File', 'Foto2.jpg')





    SELECT a.Id, b.Valor



    FROM @Tab a



    INNER JOIN @Tab b



          ON (a.Valor = b.Id AND ISNUMERIC(a.Valor) = 1)



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com


    sexta-feira, 10 de fevereiro de 2012 17:17
    Moderador
  • Kasulo,

    Neste caso a resposta fornecida pelo Caputo lhe ajudará.


    Rodrigo Ataíde.

    sexta-feira, 10 de fevereiro de 2012 17:49
  • Grato, Fabrizzio!

    Mas como eu adiciono uma terceira coluna nesta consulta?

    Por exemplo:

    id | key | valor

    40 | file | xxx.jpg

    sexta-feira, 10 de fevereiro de 2012 19:56


  • Kasulo,





    Assim:



    DECLARE @Tab TABLE



    (



          IdINT,



          [Key]VARCHAR(5),



          ValorVARCHAR(100)



    )





    INSERT INTO @Tab VALUES



    (40, 'Path', '50'),



    (50, 'File', 'Foto1.jpg'),



    (60, 'Path', '70'),



    (70, 'File', 'Foto2.jpg'),



    (70, 'File', 'Foto3.jpg')





    SELECT a.Id, b.[Key], b.Valor



    FROM @Tab a



    INNER JOIN @Tab b



          ON (a.Valor=b.IdANDISNUMERIC(a.Valor)=1)



    Fabrizzio A. Caputo
    MCT
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com

    segunda-feira, 13 de fevereiro de 2012 10:22
    Moderador
  • certinho. valeu!
    quarta-feira, 15 de fevereiro de 2012 16:26