Ajuda em uma Questão em SQL

SQL

MySQL

18/09/2016

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

Curtidas 0

Melhor post

Luiz Santos

Luiz Santos

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

Mais Respostas

Jair N.

Jair N.

18/09/2016

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

Vinicius

18/09/2016

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.
GOSTEI 0
André Coimbra

André Coimbra

18/09/2016

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.,
GOSTEI 1
Vinicius

Vinicius

18/09/2016

Muito obrigado pela ajuda. irá me ajudar.
GOSTEI 0
POSTAR