Fórum Ajuda em uma Questão em SQL #562454

18/09/2016

0

alguem poderia porfavor me ajudar nesse problema?, preciso de uma explicação e como seria o modo certo.




estou tentando realizar um select em várias tabelas e nao estou conseguindo, para ser mais preciso estou tentando selecionar todos os contatos de um usuário, e o sql executa mas retorna um conjunto vazio.

SELECT contato.nome, contato.apelido,
contato.aniversario, contato.notas,
contato.familia, contato.prefix, contato.sufix,
telefone.telefone, telefone.tipo,
email.email, endereco.endereco, endereco.tipo,endereco.rua,
endereco.cidade, endereco.estado, endereco.cep, ims.ims,
organizacao.organizacao, organizacao.departamento,
organizacao.titulo, foto.foto, categoria.categoria, url.rul
FROM contato, telefone, email, endereco, ims, organizacao, foto, categoria,url
WHERE contato.id = telefone.id_contato
AND contato.id = email.id_contato
AND contato.id = endereco.id_contato
AND contato.id = ims.id_contato
AND contato.id = organizacao.id_contato
AND contato.id = foto.id_contato
AND contato.id = categoria.id_contato
AND contato.id = url.id_contato
AND contato.id_usuario = 10
Vinicius

Vinicius

Responder

Post mais votado

18/09/2016

Vinicius, do jeito que você montou, obrigatoriamente tem de haver dados em todas as tabelas, se não vai retornar um conjunto vazio.
Faça o teste em todas elas com o mesmo ID CONTATO, para ver onde não retorna nada.
Outro jeito é você mudar o seu código.
Nele você colocou todos os relacionamento dentro do WHERE.
Tente colocá-los dentro do FROM, e use LEFT JOIN.

Consegui ser claro?

Grande abs

Luiz Santos

Luiz Santos
Responder

Gostei + 1

Mais Posts

18/09/2016

Jair N.

Boa Noite, faça por partes, algum destes pode conter dados vazios, ou não relacionados
Responder

Gostei + 0

18/09/2016

Vinicius

Boa noite, este é uma questão de um trabalho da faculdade, e nao estou conseguindo bem saber o real problema, oq a questão pede é para eu fazer um código resolvendo o problema, você teria alguma solução e se possivel me explicar?. obrigado pela atenção.
Responder

Gostei + 0

19/09/2016

André Coimbra

Verifique se te ajuda:

SELECT
CONTATO.NOME
,CONTATO.APELIDO
,CONTATO.ANIVERSARIO
,CONTATO.NOTAS
,CONTATO.FAMILIA
,CONTATO.PREFIX
,CONTATO.SUFIX
,TELEFONE.TELEFONE
,TELEFONE.TIPO
,EMAIL.EMAIL
,ENDERECO.ENDERECO
,ENDERECO.TIPO
,ENDERECO.RUA
,ENDERECO.CIDADE
,ENDERECO.ESTADO
,ENDERECO.CEP
,IMS.IMS
,ORGANIZACAO.ORGANIZACAO,
,ORGANIZACAO.DEPARTAMENTO,
,ORGANIZACAO.TITULO,
,FOTO.FOTO,
,CATEGORIA.CATEGORIA
,URL.URL
FROM
CONTATO
LEFT JOIN TELEFONE ON
(CONTATO.ID = TELEFONE.ID_CONTATO)
LEFT JOIN EMAIL ON
(CONTATO.ID = EMAIL.ID_CONTATO)
LEFT JOIN ENDERECO ON
(CONTATO.ID = ENDERECO.ID_CONTATO)
LEFT JOIN IMS ON
(CONTATO.ID = IMS.ID_CONTATO)
LEFT JOIN ORGANIZACAO ON
(CONTATO.ID = ORGANIZACAO.ID_CONTATO)
LEFT JOIN FOTO ON
(CONTATO.ID = FOTO.ID_CONTATO)
LEFT JOIN CATEGORIA ON
(CONTATO.ID = CATEGORIA.ID_CONTATO)
LEFT JOIN URL ON
(CONTATO.ID = URL.ID_CONTATO)
WHERE
CONTATO.ID_USUARIO = 10


Para estas situações, procure usar o Inner, left, right ou full join... de uma pesquisada a mais a respeito desses comandos.


Atte.,
Responder

Gostei + 1

20/09/2016

Vinicius

Muito obrigado pela ajuda. irá me ajudar.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar