Usando Left Outer Join

PostgreSQL

08/09/2010

Pessoal, tenho as seguintes tabela:

Tabela:
Unidade
  categoria1 varchar
  categoria2 varchar
  categoria3 varchar


registros:
categoria1        categoria2           categoria3
cat1                  cat2                     cat3 
cat1                  cat2                     (VAZIO)
cat1                  (VAZIO)                (VAZIO)



Tabela:
Estrurua
  categoria1 varchar
  categoria2 varchar
  categoria3 varchar


registros:
categoria1        categoria2           categoria3  valores
cat1                  cat2                     cat3            100
cat1                  cat2                     (VAZIO)       200
cat1                 (VAZIO)                (VAZIO)       300


Quando eu utilizo um select:
Select U.categoria1, U.categoria2, U.categoria3, E.valores
from unidade as U LEFT OUTER JOIN estrutura as E using (categoria1,categoria2,categoria3)

O Resultado é esse:

categoria1        categoria2           categoria3  valores
cat1                  cat2                     cat3            100
cat1                  cat2                     (VAZIO)       (VAZIO)           
cat1                  (VAZIO)               (VAZIO)       (VAZIO)                        
    

O ESPERADO É:


categoria1        categoria2           categoria3  valores
cat1                  cat2                     cat3            100
cat1                  cat2                     (VAZIO)       200           
cat1                  (VAZIO)               (VAZIO)       300

quando uso o left outer join nas duas tabelas os valores da tabela ESTRUTURA, onde apresenta CAMPOS (VAZIO)
não é exibido. Ou seja, a comparação com os campos nulos não é feita, Existe alguma maneira para que apareça ou a clasula USING faça a comporação de campos NULOS.
Guilhr

Guilhr

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

08/09/2010

Teste assim:
SELECT
  uni.Categoria1,
  uni.Categoria2,
  uni.Categoria3,
  estr.Valores
FROM
  UNIDADE AS uni
    LEFT OUTER JOIN ESTRUTURA AS estr ON (
      uni.Categoria1 = estr.Categoria1 AND
      uni.Categoria2 = estr.Categoria2 AND
      uni.Categoria3 = estr.Categoria3)


Espero ter colaborado.
GOSTEI 0
Guilhr

Guilhr

08/09/2010

Teste assim:
SELECT
  uni.Categoria1,
  uni.Categoria2,
  uni.Categoria3,
  estr.Valores
FROM
  UNIDADE AS uni
    LEFT OUTER JOIN ESTRUTURA AS estr ON (
      uni.Categoria1 = estr.Categoria1 AND
      uni.Categoria2 = estr.Categoria2 AND
      uni.Categoria3 = estr.Categoria3)


Espero ter colaborado.


Olá Wilson, já tentei dessa maneira maneira e não deu certo.
GOSTEI 0
Wilson Junior

Wilson Junior

08/09/2010

Teste assim então:
SELECT
  uni.Categoria1,
  uni.Categoria2,
  uni.Categoria3,
  estr.Valores
FROM
  UNIDADE AS uni
    LEFT OUTER JOIN ESTRUTURA AS estr ON (
      uni.Categoria1 = estr.Categoria1 AND
      COALESCE(uni.Categoria2, 0) = COALESCE(estr.Categoria2, 0) AND
      COALESCE(uni.Categoria3, 0) = COALESCE(estr.Categoria3, 0) )


Espero ter colaborado.
GOSTEI 0
POSTAR