1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Joins SQL

Discussão em 'Programação' iniciada por Gurzi, 15 de Outubro de 2008. (Respostas: 3; Visualizações: 580)

  1. Gurzi

    Gurzi Power Member

    Boas malta, tenho aqui uma dúvida que me está a fazer alguma confusao

    Imaginando que temos estas tabelas

    Tabela1
    Tabela2
    Tabela3
    Tabela4
    Tabela5

    E eu quero ligar a tabela 1 á 2 , a 2 á 3, a 2 á 5 e a 3 á 4 , como fariam isto com joins ?

    O problema é que se eu n quisesse ligar a 2 á 5, fazia os joins todos seguidos e fico confuso com o seguinte:

    Quando fazemos tabela 1 JOIN tabela 2 e de seguida fazemos JOIN x , estamos a ligar a tabela 2 a X ou estamos a ligar uma tabela resutlante da ligacao de 1 com 2 a x ?

    Se alguem me puder mostrar o código como ficava com a ligacao que indiquei.

    Digo isto porque ao fazermos 2 join 3, se fizermos join de novo estamos a indicarnos á tabela 3 e nao á 2 e para voltarmos á 2, teriamos que repetir a sua definicao.

    Sei que é um bocado confuso :s
     
  2. SunsetRider

    SunsetRider Power Member

    Tu podes fazer selects específicos para cada tabela e utilizar UNION

    ou seja

    Código:
    Select colunas from tabela 1 UNION select colunas from tabela 2 
    se quiseres valores duplicados usa o UNION ALL , parece-me mais efeciente usares o union mas é uma opção

    em relação ao JOIN exemplo
    Código:
    SELECT * 
    FROM   employee RIGHT OUTER JOIN department 
              ON employee.DepartmentID = department.DepartmentID
    os Resultados são registos unificados

    mas investiga melhor em http://en.wikipedia.org/wiki/JOIN#Outer_joins
     
  3. Gurzi

    Gurzi Power Member

    Nao consegui perceber na mesma se quando ligas 1 com 2 resulta x e depois x liga a y, ou se quando ligas 1 com 2 depois ao ligar com x se estás a ligar o 2 apenas
     
  4. SkylineGTR

    SkylineGTR Power Member

    Código:
    SELECT ...
    FROM Table1 1
    LEFT OUTER JOIN Table2 2 ON 2.Id = 1.Id
    LEFT OUTER JOIN Table3 3 ON 3.Id = 2.Id
    LEFT OUTER JOIN Table5 5 ON 5.Id = 2.Id
    LEFT OUTER JOIN Table4 4 ON 3.Id = 4.Id 
    
    Usei o OUTER JOIN em todas as junções, mas tu é que tens de ver cada caso.
     

Partilhar esta Página