Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) CASE não retornando


AndréSAP

Pergunta

Pessoal é assim.

Nesse select preciso que ele me retorne o plano de saude dos dependentes, quando não ouver (NULL) retornar '-'.

Pra saber o plano de súde dos dependentes só sabendo o dos funcionarios, por isso tenho que ligar PLANOSAUDE-FUNCIONARIOS-DEPENDENTES.

Mas o caso é que ele não está mostrando o '-' no lugar dos NULL. Simplesmente ele corta o nome fora e mostra só os dependentes que possuem plano de saúde.

O código é esse:

SELECT d.nome,
CASE WHEN (
f.planosaude IS NULL
)
THEN '-'
ELSE ps.nome
END AS planosaude
FROM funcionario f
JOIN dependente d ON ( d.funcionario = f.codigo )
JOIN planosaude ps ON ( f.planosaude = ps.codigo );

Me deem uma luz aí.

Tks.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

i aew AndréSAP, bom esse código deveria funcionar, tem certeza que você não esta confundido o campo vazio com null?

testa tipo assim:

SELECT d.nome,
CASE WHEN (
f.planosaude = ''
)
THEN '-'
ELSE ps.nome
END AS planosaude
FROM funcionario f
JOIN dependente d ON ( d.funcionario = f.codigo )
JOIN planosaude ps ON ( f.planosaude = ps.codigo );

espero que ajude abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

É NULL mesmo.

O estranho é que se eu tirar o JOIN planosaude ps ON (f.planosaude = ps.codigo); e colocar ELSE f.planosaude ele mostra. Mas eu não queros os códigos do plano de saúde, quero os nomes. Por isso preciso da ligação com essa terceira tabela. Mas não sei porque esse último JOIN tá cortando os NULL fora.

Link para o comentário
Compartilhar em outros sites

  • 0

tenta tipo assim:

SELECT d.nome,
CASE WHEN (
f.planosaude = ''
)
THEN '-'
ELSE ps.nome
END AS planosaude
FROM funcionario f
LEFT JOIN dependente d ON ( f.codigo = d.funcionario )
LEFT JOIN planosaude ps ON ( f.planosaude = ps.codigo );

Link para o comentário
Compartilhar em outros sites

  • 0

tipo assim, o LEFT JOIN preserva as linhas da tabela da esquerda, no caso "funcionario" e

descarta as da direita quando não tem nehum valor correspondênte.

sou meu ruim para explicar, mas qualquer coisa da uma googlada!

falow abraço!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...