Tenta assim :
* Mas colocar os indices ai para melhorar a performance dessa query !

select nome, array(select titulo from Aluno_atividade aa join atividades a on aa.cod_atvidade = a.cod and aa.cod_aluno = al.cod)
from alunos al

Att:

Thiago Risso


On 9/26/06, Kamayocks <[EMAIL PROTECTED]> wrote:
Obrigado Osvaldo!
Vou tentar isso e caso obtenha sucesso retornarei para a lista com a solução. a
fim de disponibilizá-la para todos.
Valeu!

Citando Osvaldo Rosario Kussama < [EMAIL PROTECTED]>:

> Kamayocks escreveu:
> > --Olá todos!
> > --Preciso de um "help".
> > --O lance é o seguinte:
> > --Há uma tabela de alunos (cod integer, nome varchar(50)),
> > --   uma de atividades (cod integer, titulo varchar(30))
> > --   e uma associativa, Aluno_atividade (cod_aluno integer, cod_atvidade
> > integer)
> > --   (um aluno com uma ou mais atividades / uma atividade com um alunos ou
> > mais).
> >
> > create table alunos(cod integer, nome varchar(10));
> > create table atividades (cod integer, titulo varchar(20));
> > create table Aluno_atividade (cod_aluno integer, cod_atvidade integer) ;
> > -- Alunos
> > insert into Alunos values(1,'Joaquim');
> > insert into Alunos values(2,'Maria');
> > insert into Alunos values(3,'Joana');
> > --Atividade
> > insert into atividades values(1,'Arte Plástica');
> > insert into atividades values(2,'Esporte');
> > insert into atividades values(3,'Musica');
> > --Aluno_Atividade
> > insert into aluno_atividade values(1,1);
> > insert into aluno_atividade values(1,2);
> > insert into aluno_atividade values(1,3);
> > insert into aluno_atividade values(2,1);
> > insert into aluno_atividade values(3,2);
> > insert into aluno_atividade values(3,1);
> >
> > --Ao selecionar os dados...
> > select nome, titulo
> >   from alunos al
> >   join Aluno_atividade aa on aa.cod_aluno = al.cod
> >   join atividades at on at.cod = aa.cod_atvidade
> >
> > --obtenho....
> >
> > --nome       titulo
> > ------------ --------------------
> > --Joaquim    Arte Plástica
> > --Joaquim    Esporte
> > --Joaquim    Musica
> > --Maria      Arte Plástica
> > --Joana      Esporte
> > --Joana      Arte Plástica
> >
> > --Eu gostaria de obter os registros acima da seguinte forma (array):
> >
> > --nome       titulo
> > ------------ --------------------
> > --Joaquim    Arte Plástica, Esporte, Musica
> > --Maria        Arte Plástica
> > --Joana        Arte Plástica, Esporte
> >
> > -- É possível obter dados de uma tabela filha em uma única coluna? Se
> > afirmativo, podem me passar o caminho das pedras?!
> >
>
>
> Você precisa utilizar uma função de agregação.
>
> Veja o exemplo array_accum em:
> http://www.postgresql.org/docs/8.1/interactive/xaggr.html
>
> []s
> Osvaldo
>
>
>
>
>
> _______________________________________________________
> Você quer respostas para suas perguntas? Ou você sabe muito e quer
> compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
> http://br.answers.yahoo.com/
> _______________________________________________
> 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
>



___________________________________________________________________________________
Agora todas as suas ligações DDD e DDI com o 21 vêm junto com a conta do seu
telefone de casa ou celular.
Mais comodidade e praticidade para você. Faz um 21 e aproveite!

_______________________________________________
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