Comparar Campos nulls

14/05/2014

0

ola, pedia ajuda aqui num comando que estou a ter dificuldades. é o seguinte:
eu tenho uma tabela A com os dados

A-
1
2 Barcelos
3 Braga
4 Guimaraes
etc

e uma B
B-
1 Jose Braga
2 Luis Guimaraes
3 Rodrigo
4 Joaquim Barcelos

e queria fazer um select para ir buscar o id em vez do nome

resultado do select que preciso

1 Jose 3
2 Luis 4
3 Rodrigo 1 -> problema aqui nao compara null com null
4 Joaquim 2

com um left join retorno todas as linhas certas que nao sejam null mas as null fica vazio. nao consegue comparar.
Alguem sabe de alguma solucao? obrigado
Jose Alves

Jose Alves

Responder

Posts

15/05/2014

Jair N.

Bom Dia use "RIGHT JOIN" ou pegando na cláusula "FROM" como principal a tabela mais povoada, exemplo algo assim: SELECT B.*, A.* FROM B LEFT JOIN A ON (A.nome LIKE B.nome + '%') ORDER BY B.nome;

Atc
Responder

15/05/2014

Jose Alves

boas. a parte do " +'%' " nao funciona , nao detecta o + para concatenar
Responder

15/05/2014

Jair N.

Boa Tarde, realmente por pressa cometi um engano segue abaixo agora correto
SELECT B.*, A.* FROM B LEFT JOIN A ON (B.nome LIKE '%' + A.nome) ORDER BY B.nome;
Isto para M.S.SQLServer o "+" funciona sim em teste o atributo "nome" é VARCHAR ok...

Atc.
Responder

15/05/2014

Jose Alves

Peço desculpa eu meti no topico errado, nao é em sql server mas sim em postgres. Pedia a um moderador para meter no topico certo, sff

mas mesmo assim substituí o + pelo concat

SELECT B.*, A.* FROM B LEFT JOIN A ON (B.nome LIKE CONCAT( '%' , A.nome)) ORDER BY B.nome

e continua a não dar.
nos registos que ele encontrava anteriormente está a duplicar metendo o id certo numa linha e o id do campo null noutra para todos os registos, menos nos registos que o texto é null , aí continua a nao meter nada
Responder

15/05/2014

Alex Lekao

Ola Boa tarde!!!

Eu sugiro tratar os nulls antes das comparacoes.

Nao sei como faz o PostGree mas no SQL vc pode usar o isnull(campo,vazio) por exemplo e com isso ele substitui o que estiver com null pela palavra que vc colocou na ultima sentenca da sintaxe, assim vc consegue comparar.

Espero ter ajudado.

Abraco.

Alex - Lekao
Responder

16/05/2014

Jose Alves

Alex - Lekao obrigado pela ajuda. Depois do que disse , eu procurei uma função semelhança á que deu mas para postgres e encontrei. a Funcao é COALESCE



Solucao final


SELECT B.id,B.nome,COALESCE ( A.id,A.id,//aqui é o valor que queremos meter caso seja null, no meu caso 1) FROM B LEFT JOIN A ON (B.nome LIKE  A.nome) ORDER BY B.nome 
Responder

16/05/2014

Alex Lekao

Otimo.

Entao resolveu.

Parabens!!!

Obrigado por postar a solucao.

Abraco.

Alex - Lekao
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar