Dúvida em select join

5 respostas
S

Pessoal, tenho uma dúvida sobre como fazer uma query usando join

Suponha q eu tenha as seguintes tabelas e campos

tabela: Usuario
campos: ID, user_name

tabela: Tarefa
campos: tarefa_name, user_primario_id, user_secundario_id

Como ficaria a query com a junção dessas duas tabelas, sendo que ao invés de eu colocar o id do usuario queria colocar o nome. tendo algo desse tipo

Tarefa|UsuarioPrimario|UsuarioSecundario
test salvio rodrigo
test2 diego salvio

onde: salvio tem id 1, rodrigo id 2, e diego id 3

O que eu tenho hoje é:
Tarefa|UsuarioPrimario|UsuarioSecundario
test 1 2
test2 3 1

Se puderem me ajudar ficaria agradecido

5 Respostas

J-Chist

Dá uma olhada nesse tutorial de join http://www.macoratti.net/cursql4.htm .

No exemplo abaixo, estou usando alias para fazer join de uma tabela com ela mesma:

Exibir identidade e nome de empregado e seu supervisor (supervisor é empregado também):

select e.ident, e.nome, s.ident, s.nome from empregado e join empregado s on s.superident=e.ident;

Tenta aí e caso não consiga, coloque seu select aqui para que possamos lhe ajudar.

andre_qjo

Bom, qual o intuito de executar o join sem ser pelo id?

Eu faria do seguinte modo:

SELECT user_name,  TarefaPrimario.tarefa_name, TarefaSecundario.tarefa_name  FROM Usuario

LEFT OUTER JOIN Tarefa TarefaPrimario ON (usuario.ID = TarefaPrimario.user_primario_id)

LEFT OUTER JOIN Tarefa TarefaSecundario (usuario.ID = TarefaSecundario.user_secundario_id)

Desse modo voce sempre traria o usuario, e caso ele tivesse tarefa tanto quanto primario, quanto secundario, também traria.

J-Chist

hehe, andre_qjo, geralmente eu acho meio caxias dizer que não se deve dar o peixe mas ensinar a pescar, mas nesse caso acho que não seria legal dar a resposta prontinha ao autor do tópico, porque ele parece não estar entendendo o join muito bem. Se ele for de Informática e não entender isso vai passar muito perrengue na vida. Por isso acho que seria melhor ajudarmos ele a compreender o conceito.

S

Eu usei algo parecido com essa solução que nos deram

SELECT user_name, TarefaPrimario.tarefa_name, TarefaSecundario.tarefa_name FROM Usuario

LEFT OUTER JOIN Tarefa TarefaPrimario ON (usuario.ID = TarefaPrimario.user_primario_id)

LEFT OUTER JOIN Tarefa TarefaSecundario (usuario.ID = TarefaSecundario.user_secundario_id)

e funcionou.

O problema que eu tava tendo era em fazer o 2o join

Mt obrigado

andre_qjo

J-Chist concordo plenamente, acabei postando a solução toda ai, mas talvez olhando o resultado final o Salvio consiga entender o sentido da coisa.

Salvio se tiver duvida ai ou naum tiver entendido direito o join que mandei só perguntar ai ok?

flws

Criado 12 de agosto de 2009
Ultima resposta 12 de ago. de 2009
Respostas 5
Participantes 3