none
Uso de JOINs para consulta de dados RRS feed

  • Pergunta

  • Olá pessoal, tudo bem?

     

    Bom, eu sei o quanto possa parecer repetitivo este tópico, mas espero que todos tenham a compreensão. Eu estou com dúvidas (ou melhor muitas dúvidas) em relação ao uso de JOINs. Eu procurei ajuda pela Internet, mas confesso que fiquei um pouco confuso com algumas coisas.

     

    Vamos imaginar que eu tenha o seguinte cenário na estrutura física de um banco de dados:

    Tabela: Preços

    Campos: id_produto, preco_produto, desc_id, desc_max, desc_trava, ativo.
    * Observação: O campo ativo com o valor 1 significa que o produto esta ativo e marcado com 0 indica inatividade.

     

    Tabela: Produtos

    Campos: id_produto, preco_produto, nome_produto, descricao_produto.

    O que eu gostaria de fazer?
    Simples: Gostaria de uma consulta que retornasse o id_produto (código do item), nome_produto (nome do item), e desc_trava (desconto de trava do item); Mas que retornasse somente os clientes ativos

     

    Acredito, que nesta situação, eu consiga usar o JOIN, LEFT JOIN, OUTER JOIN, LEFT OUTER JOIN, correto? Na teoria eu sei o que são estas junções, mas na prática estou me complicando todo. Por exemplo: Pesquisando na internet eu vi um trecho de código com a.nomedatabela e b.nomedatabela

     

    O que é este "a." e "b." ? Quando e porque eu os utilizo?
    Alguém poderia indicar um tutorial ou um livro no qual eu pudesse aprender mais sobre JOINs e seus pecados?

    Valeu pela ajuda pessoal Wink
    Abraços à todos!

    segunda-feira, 8 de dezembro de 2008 18:51

Todas as Respostas

  • Olá Jöachim,

     

    Na ocasião de elaboração do programa MSDN Experience, tive a oportunidade de gravar três vídeos sobre o conteúdo do SQL Server. Em um desses vídeos, explico o que são JOINs, os JOINs existentes e como utilizá-los. Acredito que você irá achá-lo muito interessante. Para conhecer mais sobre o MSDN Experience, procure nas Threads anteriores.

     

    Há também um artigo escrito pelo Thiago no link abaixo:

     

    http://thiagocaserta.blogspot.com/2008/02/consultas-com-joins.html

     

    A e B são alias, ou melhor dizendo, apelidos que você deu para as tabelas. Ao invés de repetir um nome muito extenso, você pode dar apelidos para simplificar as consultas. Não utilizaria alias A e B porque não são muito intuitivos, talvez PROD ou CLI fosse escolhas melhores.

     

    [ ]s,

     

    Gustavo

    segunda-feira, 8 de dezembro de 2008 19:19
  • Ainda lendo o artigo, não consegui sanar minhas dúvidas ...
    Mas, vou que vou tentando ...
    Tongue Tied

    terça-feira, 9 de dezembro de 2008 13:04
  • Boa Tarde,

     

    Recomendo então procurar o vídeo do MSDN Experience. Pode lhe ser útil.

    A consulta deve ficar algo parecido com o abaixo:

     

    Code Snippet

    SELECT

    pd.id_produto, nome_produto, desc_trava

    FROM

    Produtos AS Pd

    INNER JOIN Preco AS Pr ON Pd.id_produto = Pr.id_produto

    WHERE

    ativo = 1

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 9 de dezembro de 2008 15:07
  • Gustavo,

     

          Muito obrigado pela resposta. Mas surgiu uma dúvida, vi que na sua query você colocou o seguinte trecho:

    SELECT

    pd.id_produto,

     

           Eu poderia trocar o pd.id_produto por a.pd_produto por exemplo? Isto pode alterar o resultado da query? Existe alguma convenção (padrão) para nomear tais consultas?

     

    Ps.: Assisti partes do vídeo. Parabéns Wink

     


        

    quarta-feira, 17 de dezembro de 2008 11:05
  • Olá Jöachim,

     

    Não há nenhum problema. Pode realizar a troca sem problemas. É apenas uma questão de qual campo você quer exibir. Não há nenhuma convenção padrão nesse sentido. Apenas adote o mesmo padrão em todas as suas consultas para ficar mais fácil de manter.

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 31 de dezembro de 2008 12:43