Foreing key null?

1. Foreing key null?

Paulo Camboim
paulocamboim

(usa Slackware)

Enviado em 29/07/2009 - 00:00h

Pessoal,

Tinha postado na comunidade de banco de dados, mas como aqui acho q tem mais movimento segue minha pergunta..

Tou com a seguinte duvida. Antes eu estava utlizando tabelas MyIsam que nao podia ter um foreing key. Agora tou aprendendo utilizar InnoDB.

Mas ainda ficou algumas duvidas, por exemplo:

eu tenho duas tabelas: Clientes e cidade usando MyIsam:

cliente:
- idCliente
- nome
- idCidade

Cidade
- idCidade
- nome

No cadastro pode acontecer que voce nao queira preencher a cidade do cara, logo ela vai ficar NULL.
Ai quando faco o select nao consigo retornar nenhum registro que o campo cidade nao tenha sido preenchido, pq tou usando o select assim:
SELECT * FROM cliente a, cidade b WHERE a.idCidade = b.idCidade;

Como eu faria para retornar os registros de clientes que nao tiveram sua cidade preenchida. E agora passando pra InnoDB eh possivel ter essa foreing key(idCidade) como null??

Obrigado...
Paulo


  


2. RE: Foreing key null?

Samuel Moura
samucabh

(usa Ubuntu)

Enviado em 29/07/2009 - 10:21h

Por se tratar de banco de dados não faz sentido ter uma chave estrangeira como null, mesmo porque, creio não ser possível, afinal de contas a tabela que tem esse campo como chave primária não pode ser nulo, não é verdade?


3. Re: Foreing key null?

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/07/2009 - 10:50h

Em um esquema de banco de dados você PODE perfeitamente ter uma chave estrangeira como null, desde que ela não seja também a chave primária da tabela.

Use um JOIN pra fazer isso:

SELECT * FROM cliente a RIGHT JOIN cidade b ON a.idCidade = b.idCidade;

Se não funcionar, tenta:

SELECT * FROM cliente a RIGHT OUTER JOIN cidade b ON a.idCidade = b.idCidade;

Caso você quisesse obter os resultados da coluna da ESQUERDA sem correspondência, bastava trocar o RIGHT por LEFT.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts