DESCULPEM O OFF NOVAMENTE :(

Boa noite pessoal, ultimamente venho estudando mais as instruções SQL
e estou tentando cada vez mais otimizar meus sistemas usando alguns
recursos do proprio banco de dados, e venho a todos pedir uma
orientação em uma questão que não sei se é possível ou não, abaixo vou
ilustrar o meu problema:

- Tenho 2 tabelas:

usuario
Campos: id_usuario | nome_usuario | senha_usuario

usuario_contato
Campos: id_contato | fk_id_usuario | descricao_contato

Como podem ver, eu tenho uma chave estrangeira na tabela
usuario_contato relacionando com a tabela usuário. Até este ponto sem
problema, ok ?

O x da questão vem agora, como eu faço para fazer uma consulta
buscando agrupando as 2 consultas sabendo que:
- O campo fk_id_usuario não é obrigatório.

Teoricamente a forma da consulta seria assim:

  SELECT u.*, c.* FROM usuario AS u
   JOIN usuario_contato AS c
    ON c.fk_id_usuario = u.id_usuario
  WHERE u.id_usuario = 5



Mas se o usuário de id 5 não inseriu nenhuma informação de contato a
FK da tabela contato estará vazia e com isso a consulta não ira
retornar nada certo ?


Atualmente eu tenho que fazer 3 consultas para resolver isso, primeiro
faço uma consulta na tabela de usuario:

SELECT * FROM usuario WHERE id_usuario = 5



Depois faço uma verificação na tabela contato_usuario para ver se
existe algum registro pertinente ao usuário

qtd = SELECT COUNT(*) FROM usuario_contato WHERE fk_id_usuario = 1
// verifico se existe os dados, então faço uma consulta para armazenar os dados

if ( qtd > 0 )
  contato = SELECT * FROM usuario_contato WHERE fk_id_usuario = 1



Alguém poderia me ajudar ? O que eu pensei em fazer é algo parecido com isso:

 SELECT u.*, c.* FROM usuario AS u

   IF c.fk_id_usuario != NULL faca {
      JOIN usuario_contato AS c
       ON c.fk_id_usuario = u.id_usuario
  }

  WHERE u.id_usuario = 5



Ps.: no contexto do meu projeto, a tabela usuario_contato só vai poder
armazenar 1 unico registro, ou seja, eu posso trazer ele junto com
join pois vai ter apenas 1 linha.

-- 
Att,

André da Silva Severino
Desenvolvedor web
(19) 8847.3747
Email: [email protected]
Url: http://andrewd.com.br

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a