Ir para conteúdo
Fórum Script Brasil
  • 0

JOIN


Samir

Pergunta

Oi, boa noite!

Estou com uma dúvida que para não estender demais na pergunta eu vou simplificar a dúvida em 3 tabelas (mais que isto só muda o trabalho, para entender 3 esta beleza).

Tenho 3 tabelas,

( A ) TabelaA campos ÍNDICE e NOME

1 - joão

2 - maria

( B ) TabelaB campos ÍNDICE e COR

1 - amarelo

2 - vermelho

( C ) TabelaC campos ÍNDICE e EMAIL

1 - joao@joao.net

Como podem notar a maria não tem email cadastrado, e não gostaria de ter de cadastrar somente o índice com campo email NULL. Fazendo a SELECT tanto com LEFT JOIN, LEFT OUTER JOIN, RIGHT JOIN, INNER JOIN ou somente JOIN o resultado é o mesmo (com ou sem DISTINCT, dei tiro para tudo que foi lado).

SELECT DISTINCT A.*, B.*, C.* FROM A

LEFT JOIN B ON A.id=B.id

LEFT JOIN C ON A.id=C.id

ORDER BY A.nome ASC

O resultado é sempre JOÃO e seus dados, eu gostaria de, por exemplo neste caso, ter os dados de MARIA mesmo que a condição do ON no EMAIL seja NULL ou índice inexistente.

Alguém poderia me ajudar?

Desde já,

Muito obrigado

Editado por Samir
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi,'Samir'

Pelo que analisei você está tentando comparar tijolo com pipoca e laranja. ou seja não há relação entre as tabelas que você forneceu.

Meu entendimento mostra que a TtabelaA deveria possuir os atributos idcor e idemail para representar os identificadores de cor (TabelaB) e email (TabelaC) respectivamente.

Se a TabelaA possuir estes atributos então você poderá fazer relacionamento entre as três tabelas.

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa eu me expressei mal, na verdade aquele 1 e 2 ao lado são os índices,

ID | Nome

2 | Maria

IDc | Cor

2 | vermelho

Então, então se existe ID=IDc isso quer dizer que a cor de Maria é vermelho, certo? O que estou tentando fazer, evitando outra pesquisa ao banco é fazer uma JOIN que busque os dados de Maria, mesmo que ela não tenha definido o email, pois como no exemplo que dei, ela não tem email cadastrado, então a JOIN não encontra referência de índice, ID=IDe é NULL e a query não me retorna o nome nem a cor de Maria.

A menos que, o que estou pensando é inviável, e terei que fazer uma consulta ao banco com os dados de nome e cor, e posteriormente outra consulta trazendo os dados de email, se tiver email cadastrado.

Se o meu primeiro raciocínio não tiver solução, vou precisar fazer outra consulta mesmo, poderias me ajudar com esta solução? Qual delas é a viável?

Pois pelo que eu entendi do seu entendimento, eu só posso usar JOIN se existir atributos que satisfaçam a pesquisa nas tabelas, não contendo os atributos, vou ter de fazer outra pesquisa a tabela.

Muito obrigado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...