none
Retornar valor minimo em Select RRS feed

  • Pergunta

  • Olá,

    Tenho duas tabelas, como exemplo abaixo:

    Tabela 1                                                                  Tabela 2

    idProduto     Item                       Preco                    idProduto       Item                      Preco

    1                 shampo                                                  1              shampo                     60,00

    1                 condicionador                                        1               condicionador           50,00

    2                 Null                                                        1               gel                            40,00

                                                                                    2               pente                       30,00

                                                                                    2               pente                        20,00

    Faço uma comparação de forma a retornar da tabela2, os dados da tabela1, onde eles tem correspondência única nas colunas idProduto, Item e quando a coluna Item é nula, mas há dados na tabela2 referente ao idProduto. O resultado esperado seria este:

     

    Tabela  Resultado

    idProduto       Item                 Preco

    1                 shampo               60,00

    1                condicionador       50,00

    2                pente                    40,00

    2              pente                     30,00 

    Estou usando a query abaixo para fazer isto, porém gostaria que no caso acima, no caso de resultado com o mesmo Item e idProduto, retornasse a linha com o menor preço que no caso seria: 2 pente 30,00.

    Alguém saberia como inserir a função Min nesta query que estou usando, pois já tentei e deu erro:

    SELECT a.idProduto, a.Item, a.Preco

    From [Compras].[dbo].[teste] a

    join [" & produtos.user & "].[dbo].[" & produtos.lista & "] b on

    a.idProduto = b.idProduto AND b.Item = '')

    Obrigado!

           


    goku

    terça-feira, 5 de março de 2013 19:37

Respostas

  • Boa tarde,

    Experimente dessa forma:

    SELECT a.idProduto, a.Item, MIN(a.Preco) as Preco
    From [Compras].[dbo].[teste] a 
    join [" & produtos.user &  "].[dbo].[" & produtos.lista & "] b 
        on a.idProduto = b.idProduto AND b.Item = ''
    group by a.idProduto, a.Item

    Espero que ajude.


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

    • Sugerido como Resposta Alexandre Matayosi terça-feira, 5 de março de 2013 20:27
    • Marcado como Resposta songoku99 quarta-feira, 6 de março de 2013 03:41
    terça-feira, 5 de março de 2013 19:56
  • Boa tarde!

         Segue o código conforme entendimento de sua duvida. Espero ter ajudado.

    SELECT tb1.idProduto, MIN(tb2.Preco) as Preco, tb2.item FROM Table_1 tb1
    RIGHT OUTER JOIN Table_2 tb2 ON tb1.idProduto = tb2.idProduto
    GROUP BY tb1.idProduto,tb2.item

    • Sugerido como Resposta Alexandre Matayosi terça-feira, 5 de março de 2013 20:27
    • Marcado como Resposta songoku99 quarta-feira, 6 de março de 2013 03:41
    terça-feira, 5 de março de 2013 20:02

Todas as Respostas

  • Boa tarde,

    Experimente dessa forma:

    SELECT a.idProduto, a.Item, MIN(a.Preco) as Preco
    From [Compras].[dbo].[teste] a 
    join [" & produtos.user &  "].[dbo].[" & produtos.lista & "] b 
        on a.idProduto = b.idProduto AND b.Item = ''
    group by a.idProduto, a.Item

    Espero que ajude.


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

    • Sugerido como Resposta Alexandre Matayosi terça-feira, 5 de março de 2013 20:27
    • Marcado como Resposta songoku99 quarta-feira, 6 de março de 2013 03:41
    terça-feira, 5 de março de 2013 19:56
  • Boa tarde!

         Segue o código conforme entendimento de sua duvida. Espero ter ajudado.

    SELECT tb1.idProduto, MIN(tb2.Preco) as Preco, tb2.item FROM Table_1 tb1
    RIGHT OUTER JOIN Table_2 tb2 ON tb1.idProduto = tb2.idProduto
    GROUP BY tb1.idProduto,tb2.item

    • Sugerido como Resposta Alexandre Matayosi terça-feira, 5 de março de 2013 20:27
    • Marcado como Resposta songoku99 quarta-feira, 6 de março de 2013 03:41
    terça-feira, 5 de março de 2013 20:02
  • Olá Goku!

    Verifique as duas respostas feitas pelos nossos amigos e não esqueça de marca-las como resposta, caso tenha sido válido para você! Muito importante para que a comunidade continue evoluindo!

    Att,

    Felipo Gonçalves
    Microsoft Contingent Staff


    terça-feira, 5 de março de 2013 20:23
  • Obrigado Almeida e Gapimex! Foi muito fácil...vi que meu erro foi ter utizado tabelas diferentes que não tinham as mesmas colunas...mas enfim, muito obrigado!


    goku

    quarta-feira, 6 de março de 2013 03:44
  • Para ampliar o problema, se tivesse também dados na coluna Preco na tabela 1, seria possível montar uma select que retornasse os mínimos entre as duas tabelas que correspondessem ao idProduto e Item. 

    Obrigado


    goku

    quarta-feira, 6 de março de 2013 03:53