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:

 

$id_projeto = 5;

 

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 !

 

 

 

Olá gente,

 

tenho o seguinte select:

 

$nome_tarefa = "tarefa 1";

$id_projeto = 5;

 

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...

 

Conto com voces,

 

[]s



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



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

_______________________________________________
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

Responder a