Opa galera…
Eu possuo duas tabelas em meu BD, onde eu devo recuperar os dados para serem exibidos ao usuário. As tabelas são as seguintes…
LocalidadeLogradouro:
codLocali ( código da localidade, chave extrangeira de outra tabela )
codLograd ( número sequencial do logradouro )
desLograd ( Nome do logradouro )
numCep ( número do cep do logradouro )
codBairroInicia ( Bairro em que o logradouro inicia, mesmo valor da coluna codBairro da tabela LocalidadeBairro )
codBairroFinal ( bairro em que o logradouro termina, mesmo valor da coluna codBairro da tabela LocalidadeBairro )
LocalidadeBairro:
codLocali ( código da localidade, chave extrangeira… )
codBairro ( código sequencial para os bairros )
nomBairro ( Nome do Bairro )
nomSintetBairro ( Nome sintético para o bairro )
Em um HQL eu devo retornar: codLograd, desLograd, numCep, nomBairro ( sendo este o nome do bairro em que o logradouro inicia… )
Utilizando o seguinte comando HQL: select log.id.codLograd, log.desLograd, log.numCepLograd, bai.nomBairro from LocalidadeLogradouro log, LocalidadeBairro bai where log.id.codLocali=:codLocali and log.id.codLograd=:codLograd and log.codBairroInicia = bai.id.codBairro
Eu consigo recuperar exatamente o que eu quero. Isto quando o registro de LocalidadeLogradouro possui a informação de qual é o bairro em que ele inicia.
Tendo em vista de que alguns registros não possuem tal informação, quando eu tento recupera-los eu não recebo nada como retorno, pois a ultima clausula WHERE não é satisfeita.
Eu quero que: quando codBairroInicia for igual a 0, recupera os outros dados e retorna NULL na coluna nomBairro. Caso codBairroInicia seja diferente de 0, recuperar todos os dados.
Alguem sabe como fazer isto ?
Tentei usar os joins mais devo estar fazendo alguma coisa errada pois eles não funcionam.
Aguardo respostas…
Obrigado.
Rodrigo Kerkhoff