1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

agrupar registros diferentes

Bom dia !

Eu fiz um select aqui em 3 tabelas diferentes..

select
o.objetos, f.fk_idUsuario, (select nomeUsuario from usuarios where id = f.fk_idUsuario) as nome 
from objetos o, objetosUsuario f 
where o.objeto_id = f.fk_idObjeto
order by objeto asc;

Na tabela objetos eu tenho a lista de objetos, com nome e id(pk)

na tabela objetosUsuario f eu tenho as referencias dos objetos que cada usuario tem, fk_idObjeto que refencia o id da tabela objeto e fk_idUsuario que refencia id da tabela usuario.

E na tabela usuario eu tenho id, e nome.

Eu queria que no select ele me retornasse o Objeto, o id do usuário e o nome do usuário, e funcionou, ele retornou perfeito o que eu queria.

Agora, existe um jeito de fazer algo nesse select, que ele retorne agrupado por usuário ? Eu se ida função concat, mas não tenho certeza se ela vai servir.. tipo, queria que retornasse assim :

       [OBJETO]         |  [ID] |  [NOME]
objeto1,objeto2,objeto3 |   10  |  Nome Fulano de tal

Ah, estou usando o postgres!

Tem como fazer isso de uma maneira meio simples ? haha Muito obrigado !

Att R:

0

select array(select o.objetos from objetos o where o.objeto_id = f.fk_idObjeto) as objetos, f.fk_idUsuario, u.nomeUsuario as nome from objetosUsuario f inner join usuarios u on u.id = f.fk_idUsuario where o.objeto_id = f.fk_idObjeto order by objeto asc; — Diego Zapelini 5 horas atrás

Nome da função é array_agg()

Muito obrigado Diego!

  • select array(select o.objetos from objetos o where o.objeto_id = f.fk_idObjeto) as objetos, f.fk_idUsuario, u.nomeUsuario as nome from objetosUsuario f inner join usuarios u on u.id = f.fk_idUsuario where o.objeto_id = f.fk_idObjeto order by objeto asc;

    Diego Zapelini   12 de dez de 2014
  • Deu certo !Isso mesmo, muito obrigado!

    tobias   12 de dez de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sql select ou faça a sua própria pergunta.