Milena,
Agora a coisa mudou de figura!
Como pode ver, vc não fez as ligacoes entre as tabelas tb_tarefa,
tb_colaborador e tb_projeto, desse forma ele faz um CROSS JOIN e
multiplica a quantidade de registro de uma com a outra, a melhor forma
de fazer essa consulta seria da seguinte maneira.
SELECT t.nm_tarefa,
p.nm_projeto,
c.nm_colaborador,
t.meta_horas,
FROM tb_tarefa t
JOIN tb_colaborador c ON
(t.<campo_fk> = c.<campo_fk>,
JOIN tb_projeto p ON
(p.<campo_fk> = c.<campo_fk>,
WHERE
upper(t.nm_tarefa)=upper('$nome_tarefa') and
p.id_projeto = '$id_projeto'");
Entendeu? qq coisa manda de volta!
Uma dica, não confie tanto no distinct.. ele deve ser usado com
moderação!
SDS
Evandro
Milena Leite wrote:
Ok, deixa eu explicar direitinho..
Na verdade o meu select é esse:
"SELECT DISTINCT ON
t.nm_tarefa,
p.nm_projeto,
c.nm_colaborador,
t.meta_horas,
FROM tb_tarefa t,
tb_colaborador c,
tb_projeto p
WHERE
upper(t.nm_tarefa)=upper('$nome_tarefa') and
p.id_projeto = '$id_projeto'");
Eu posso ter tarefas de nomes iguais, mas em projetos diferentes
e apenas uma pessoa pode ficar responsavel por varios projetos..Então
eu entendo que quando eu faço o filtro de nome_tarefa e do id_projeto
ele como consequencia me tras o colaborador que esta ligado aquele
projeto e tarefa, mas ele me tras sempre o mesmo...
Em 02/03/07, Alexandre Biancuzzi <[EMAIL PROTECTED]>
escreveu:
Em tão
precisa ver certinho a estrutura da sua tabela.
Às vezes
um left join resolve tb.
Pelo q
entendi, vc tem join de 2 tabelas:
1-
projetos
(1 reg)
2-
tarefas (2
reg)
o inner
join normal vai retornar 2 registros, pois existe 2 tarefas. Neste caso
o distinct não resolve mesmo
Usa um
left join q deve resolver
From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Milena Leite
Sent: sexta-feira, 2
de março de 2007 09:35
To: Grupo de
Usuários do PostgreSQL no Brasil
Subject: Re:
[PostgreSQL-Brasil] filtrar, não consigo !
Coloquei mas não funcionou..nunca vi isso !
tá muito estranho e olha que já tô apelando e colocando assim:
select DISTINCT on id_tarefa from tb_tarefa
where id_tarefa = 15 and id_projeto = '$id_projeto' and
c.id_colaborador = 6
Em 02/03/07, Alexandre Biancuzzi <
[EMAIL PROTECTED]> escreveu:
Use o
distinct
From: [EMAIL PROTECTED]
[mailto:
[EMAIL PROTECTED]] On Behalf Of Milena Leite
Sent: sexta-feira, 2
de março de 2007 09:11
To: Grupo de
Usuários do PostgreSQL no Brasil
Subject:
[PostgreSQL-Brasil] filtrar, não consigo !
$nome_tarefa = "tarefa 1";
select * from tb_tarefa where
upper(nm_tarefa) = upper('$nome_tarefa') and id_projeto = '$id_projeto'
and c.id_colaborador = 6
E ele esta me trazendo duas informações, como
pode !? Eu tenho apenas um projeto com esse nome, embora duas tarefas
com mesmo nome e apenas um colaborador com esse id...
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
--
Milena Leite
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
--
Milena Leite
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
|