dificuldade com select simples

22/05/2003

1

pessoal,

to com dificuldade num select.

eh o seguinte.

tenho uma tabela de contatos, e uma tabela de cidades.

na tabela contatos eu tenho um campo onde fica o codigo da cidade correspondente.
O detalhe é que não é obrigatório o preenchimento do campo cidade.

quando eu faço um
´ select * from table_contatos a, table_cidades b where a.cod_cidade = b.codigo ´, os registros que nao tiveram a cidade cadastrada nao aparecem!!!

como resolvo isso, sem ter de colocar a cidade em todos os registros?


Responder

Posts

22/05/2003

Prosystem

Amigo nunca tentei isto, mas em todo caso tente apos o where colocar :
and a.cidade=´´

Talvez de certo.
Espero ter ajudado.


Responder

22/05/2003

Carnette

pessoal, to com dificuldade num select. eh o seguinte. tenho uma tabela de contatos, e uma tabela de cidades. na tabela contatos eu tenho um campo onde fica o codigo da cidade correspondente. O detalhe é que não é obrigatório o preenchimento do campo cidade. quando eu faço um ´ select * from table_contatos a, table_cidades b where a.cod_cidade = b.codigo ´, os registros que nao tiveram a cidade cadastrada nao aparecem!!! como resolvo isso, sem ter de colocar a cidade em todos os registros?


Pra não complicar muito a ´programação...CRIE uma cidade com código 0 ou vazio....


Responder

22/05/2003

Tek

valeu, mas não posso colocar um codigo vazio.

resolveria, mas nao posso.

estou criando relatórios para uma aplicação já existente. não posso mudar o fonte da aplicação e nem mexer na estrutura do BD.

obrigado...


Responder

22/05/2003

Rafael Heise

Para resolver seu problema, você deve usar
LEFT OUTER JOIN ....

SELECT CLI.NOME, CID.CIDADE FRO CLIENTES CLI
LEFT OUTER JOIN CIDADES CID ON (CLI.CDCIDADE = CID.CDCIDADE)
....

abraços...


Responder

22/05/2003

Cac2000

É só um jeito mais simples de escrever, a resposta anterior está certa:


select *
from table_contatos a, table_cidades b
where a.cod_cidade *= b.codigo


O asterisco do lado do sinal de igual indica todos os registros da tabela de contato, mesmo que não ache o correspondente na tabela de cidades


Responder

22/05/2003

Leomurray

Depende do banco de dados...
No ORACLE por exemplo, além do outer join, vc pode usar isso:

select *
from table_contatos a, table_cidades b
where a.cod_cidade(+) = b.codigo

Mas na verdade, o que eu escrevi e o que o cac2000 escreveu são outros modos de escrever o que o Zerneo escreveu...

Abraços...


Responder

23/05/2003

Jeancamila

Tek, tente isso

select *
from table_contatos a, table_cidades b
where (a.cod_cidade = b.codigo or a.cod_cidade is null)


Atensiosamente


Jean Morais
Analista de Sistemas - AIX Sistemas


Responder