Banco de Dados: Junção (Join)

Como já disse antes, vou começar a colocar as aulas da faculdade aqui para poder aprender mais e ajudar outras pessoas que estão com dúvida ou querem aprender a matéria. Começarei postando um pouco do que foi passado na primeira aula de Banco de Dados II. Praticamente o professor ficou a aula toda falando sobre como serão avaliadas as provas, como serão as aulas e todo aquele bla bla bla que nós alunos já conhecemos muito bem. Depois ele começou a ensinar como fazer o join.

Vou tentar passar aqui um pouco do que entendi da matéria. Peço aos leitores que tiverem bom conhecimento para me corrigirem caso eu erre em alguma coisa. Nunca dei uma aula dessa forma. Vamos ver o que vai virar ;)

Produto Cartesiano

Na matemática, dados dois conjuntos X e Y, o produto cartesiano dos dois conjuntos é o conjunto de todos os pares ordenados cujo primeiro elemento pertence a X e o segundo a Y.

Exemplo: se eu tenho 4 elementos no conjunto X e 3 no conjunto Y, então o produto cartesiano desses dois conjuntos será um conjunto de 12. Resumindo, é praticamente a multiplicação do X com o Y, ou seja: 4 * 3. Vou dar uma demonstração abaixo:

Temos o conjunto X e o conjunto Y:

X = {A, B, C, D}
Y = {1, 2, 3}

O produto cartesiano desses dois conjuntos será o seguinte conjunto:

X * Y = {(A, 1), (A, 2), (A, 3), (B, 1), (B, 2), (B, 3), (C, 1), (C, 2), (C, 3), (D, 1), (D, 2), (D, 3)}

Agora você me pergunta: “Terrinha, por que está explicando toda essa merda chata ai?” Porque produto cartesiano porque tem um pouco a ver com SQL. “Como assim Terrinhaaaa?” Simples, vamos imaginar que temos duas tabelas, uma chamada empregados e outra chamada trampos (não estou me sentindo muito criativo para dar nomes em tabelas -.-). Se consultarmos essas duas tabelas sem o Join, teremos o produto cartesiano das duas. Entendeu meu querido?

Referência: Wikipedia

Junção (Join)

Finalmente chegamos na parte em que iremos falar da junção, então vamos direto ao assunto:

Vejamos o diagrama abaixo:

//farm2.static.flickr.com/1364/1003565461_0efaf2b439_o.jpg” cannot be displayed, because it contains errors.

Temos essas duas tabelas: empregados e trampos. Vamos imaginar que a tabela empregados e a tabela trampos já estão certinhas e com os dados inseridos. Vamos começar dando um select na tabela empregados para vermos como ela está:

select * from empregados;

Na foto acima você pode ver o que já está guardado dentro da tabela empregados. Agora vamos dar uma olhada na tabela trampos:

select * from trampos;

bdtrampos

Mas e se quisermos pegar os dados das duas tabelas para vermos, por exemplo, qual o trampo de cada pessoa da tabela empregados? Então, é claro, teriamos que fazer a consulta nas duas tabelas ao mesmo tempo. O problema é que sem um join fica tudo o maior rolo. Lembra o que falei no começo deste post sobre produto cartesiano? Então… Faça um teste você mesmo:

select * from empregos, trampos;

Lembrou melhor agora do produto cartesiano? Foi o que aconteceu aqui. Tinhamos 4 cadastros nas duas tabelas. Foi feito o produto cartesiano que retornou 16 resultados (pois 4 * 4 = 16. Se quiser pode contar ;) )

O que fazemos para evitar isso? Simples, basta usarmos o join (finalmente heauheuehueahue). No exemplo abaixo vamos escolher certinho o que queremos que apareça na consulta, colocar os apelidos no from e finalmente fazer o join no where ;)

select e.emp_codigo, e.emp_nome, t.trampo_codigo, t.trampo_nome
from empregados e, trampos t
where e.emp_codigo = t.emp_codigo;

O que foi feito? Simples! durante o select, foram escolhidas as informações que entrariam na tabela. As letras que estão depois do nome das tabelas (na linha do from…) são os apelidos. Essas mesmas letras que estão em outros lugares da tabela são partes do código que estão sendo chamadas pelos seus apelidos. Por exemplo, o e que vem antes do emp_codigo do e.emp_codigo, é uma referência à sua tabela. Ele mostra que ele faz parte da tabela empregados (já que demos o apelido de e para a tabela empregados quando escrevemos “empregados e” depois do from). Com isso você já pode fazer comparações de uma chave estrangeira de uma tabela com a chave primária de outra tabela que tem seu mesmo nome.No exemplo acima, foi feita a comparação do e.emp_codigo e do t.emp_codigo. Os dois emp_codigo são os mesmos, só mudam as tabelas. Isso é necessário para evitar que seja feito o produto cartesiano das tabelas. À partir do momento que os dois emp_codigo foram comparados, a tabela saiu certinha.

Agora é só fazer o que mais for necessário para suas consultas, como por exemplo, usar um AND para pesquisar por código, nome e o que mais quiser fazer.

Se quiserem ver mais coisas sobre banco de dados, recomendo que dêem uma passada no Viper Tech Blog. Conheci esse blog ontem e pelo que vi já fiquei impressionado. Tem muito artigo de qualidade lá (e não apenas de SQL, mas também sobre Linux, Ruby, Ajax, Java, Web, CSS, e até mesmo alguns sobre Ruindows).

Por enquanto é só. Espero que tenham gostado e entendido o que tentei explicar. Me desculpem se estiver meio confusa ou enrolada a forma como escrevi. Sinceramente nunca tentei dar aulas dessa forma e eu mesmo me perdi um pouco escrevendo isso. Essa foi a primeira aula. Vamos ver se nas próximas eu melhoro.

Quaisquer dúvidas ou sugestões, sintam-se à vontade para comentar :)

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Powered by ScribeFire.



12 Responses to “Banco de Dados: Junção (Join)”

  1. Banco de Dados: Junção (Join)

    “Vou começar a colocar as aulas da faculdade aqui para poder aprender mais e ajudar outras pessoas que estão com dúvida ou querem aprender a matéria.

    Começarei postando um pouco do que foi passado na primeira aula de Banco de Dados II…”

  2. Muito bom :)

    E eu vou adiantar uma coisa que seu professor vai te ensinar, essa maneira é um jeito mais ou menos simples de fazer o join, que funciona, mas não é usado :P (isso eu te digo de cadeira, fiz 6 meses de estágio pra concluir meu técnico em info).
    Dei uma olhada no Viper, o post dele sobre Join fala exatamente sobre isso, então já estude fazer joins do outro jeito, porque é o que você vai precisar.

    Bons estudos =).

    Responder

  3. [...] Contact the Webmaster Link to Article linux Banco de Dados: Junção (Join) » Posted at Terramel on Saturday, August 04, [...]

  4. Só algumas considerações.
    Pelo modo que você disse o produto cartesiano é o oposto de JOINs, quando na vardade também é um JOIN, conhecido como CROSS JOIN.

    “select * from empregos, trampos;”

    Equivale a:
    “SELECT * FROM empregados
    CROSS JOIN trampos”

    A diferença é que no primeiro o JOIN é implícito e no outro explícito.
    O que você chamou de “JOIN”, na verdade é apenas um deles, no caso INNER JOIN.
    “select e.emp_codigo, e.emp_nome, t.trampo_codigo, t.trampo_nome
    from empregados e, trampos t
    where e.emp_codigo = t.emp_codigo;”

    Equivale a:
    “SELECT e.emp_codigo, e.emp_nome, t.trampo_codigo, t.trampo_nome
    FROM empregados e
    INNER JOIN trampos t ON e.emp_codigo = t.emp_codigo;”

    Mas o assunto de JOINs é realmente uma longa história…

    Abraços

    Responder

  5. Banco de dados é legal. Passei com uma nota boa quando fiz (o que não é comum! =P ). Empolguei e resolvi fazer Laboratório no semestre seguinte- matéria optativa. Maior arrependimento da minha vida acadêmica!

    A área é legal, o problema comigo foi a professora, que passava trabalhos toda semana, que não são feitos com menos de três dias! Seria tranquilo passar, se eu cursasse APENAS a matéria dela..

    Ah, gostei dos nomes! Eu tb fazia coisas do tipo =D

    Responder

  6. kkkkkkkkkkkkkk

    Da onde vc tirou esse banco de dados com esses nomes de empregados ???

    PopolonY2k
    PlanetaMessenger.org

    Responder

  7. Nossa legal. Você faz algum curso de computação?

    Responder

  8. Silveira Neto: Opa cara! Blz? Faço Informática com Ênfase em Gestão de Negócios na Fatec :D

    Responder

  9. Legal, FATEC de qual cidade?
    Eu faço Processamento de Dados na FATEC Taquaritinga.

    Responder

  10. Marcos Jordão: Opa cara! Blz? Fatec da cidade de São José do Rio Preto. O curso é Informática com Ênfase em Gestão de Negócios :D Prazer em conhecê-lo! :)

    Responder

  11. [...] 2007 Esta é a segunda aula de banco de dados que posto. Praticamente é mais do mesmo. Depois da primeira aula que postei já tive umas 3 ou 4 aulas na faculdade, tudo com basicamente a mesma coisa. Resumi um pouco de [...]

  12. [...] Banco de Dados: Junção (Join) [...]

Leave a Reply

CommentLuv Enabled