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
---------------------------