CONSULTA MYSQL

HIDDEN 23/11/2012 08:29:24
#414655
Tenho duas tabelas: imoveis e imoveis_bairros, que armazena o código e o nome dos bairros.

A string SQL que eu criei para retornar o recordset é a seguinte:

Imoveis.Open [Ô]SELECT imoveis.Codigo, imoveis.IDBairro, imoveis.IDTipo, imoveis_bairros.Nome AS Bairro, imoveis_tipo.Nome AS TPNome FROM imoveis, imoveis_bairros, imoveis_tipo WHERE (imoveis.IDBairro=imoveis_bairros.Codigo AND imoveis.IDTipo=imoveis_tipo.Codigo) ORDER BY imoveis.Codigo[Ô], conn, 3, 3


Supondo que um registro da tabela imoveis não tenha o campo IDBairro, mas tenha o campor IDTipo, esta linha é omitida do recordset. E não pode ser omitida. Ela tem que aparecer, mesmo que IDBairro não possua valor. Com Access e SQLServer, eu resolvi esse problema da seguiinte forma:
 [ô] [ô] + imoveis_bairros.Nome + [ô] [ô] AS Bairro
. Mas não funciona com o MySQL. Nem com CONCAT.

Alguém aí sabe o que preciso alterar na string?
MARCELO.TREZE 23/11/2012 09:35:53
#414661
Pergunta, a query que você apresentou acima funciona de alguma maneira ou apresenta erro?

fica dificil da query comparar um registro inexistente com um que exista, no caso do MySQL o se idbairro estiver vazio ele é considerado NULL então ficara algo assim:

(NULL = imoveis_bairros.Codigo AND imoveis.IDTipo=imoveis_tipo.Codigo) 


ou seja esta linha realmente será desconsiderada pois as coincidências devem ser exatas, uma maneira de corrigir isso poderia ser usando um OR no lugar do AND, ou até mesmo um IIF para verificar se idbairro é nula.

outra coisa sinceramente esta idbairro jamais poderia ser nula, porém se existe a possibilidade da mesma ser nula indico não inclui-la na query.

você deve sempre fazer as comparações com campos comuns em todas as tabelas. se possível poste a estrutura da tabela.
HIDDEN 23/11/2012 15:07:30
#414674
A query funciona. Analisando o caso, acho que um Left Join resolve meu problema. Hoje a noite irei implementar essa query com Left Join. Acho que vai dar.
IVANABREU 14/12/2012 15:22:51
#415978
Estou fazendo usando uma consulta usando where and like e não está retornando nenhum registro apesar de haver registros que atendem a consulta.

]SQL = ([Ô]SELECT * FROM telefones where nome like [ô][Ô] & txtnome & [Ô][ô] order by nome[Ô])
Set rs = Conexao.Execute(SQL)
Tópico encerrado , respostas não são mais permitidas