é possivel uma consulta de select que retorna os dados do banco numa mesma tupla?
então galera estou com dificuldades, a situacao é o seguinte:
tenho um select simples que é esse:
SELECT u.situacao,u.id_usuario,u.nome, s.sigla, a.id_avaliacao, a.id_avaliado, atv.descricao_atividade
FROM public.usuarios u, public.setor s, public.avaliacao a, public.atividade atv, public.etapa e
where a.situacao = 6
and id_usuario = a.id_avaliado
and u.id_setor = s.id_setor
and e.id_atividade = atv.id_atividade
and e.id_etapa = a.id_etapa
bom ele retorna a td certo, porem não em apenas em uma unica linha. pq se o usuário tiver varias avaliações esse select vai fazer a busca certa porem vai vim em varias tuplas, no caso o usuario vai ser repetido tres vezes se ele tiver três avaliações. tem como aparecer apenas o usuario e na mesma tupla as avaliacoes do mesmo?
ex:
usuario - ava1 -ava2 -ava3 ?
tenho um select simples que é esse:
SELECT u.situacao,u.id_usuario,u.nome, s.sigla, a.id_avaliacao, a.id_avaliado, atv.descricao_atividade
FROM public.usuarios u, public.setor s, public.avaliacao a, public.atividade atv, public.etapa e
where a.situacao = 6
and id_usuario = a.id_avaliado
and u.id_setor = s.id_setor
and e.id_atividade = atv.id_atividade
and e.id_etapa = a.id_etapa
bom ele retorna a td certo, porem não em apenas em uma unica linha. pq se o usuário tiver varias avaliações esse select vai fazer a busca certa porem vai vim em varias tuplas, no caso o usuario vai ser repetido tres vezes se ele tiver três avaliações. tem como aparecer apenas o usuario e na mesma tupla as avaliacoes do mesmo?
ex:
usuario - ava1 -ava2 -ava3 ?
Waldir Neto
Curtidas 0
Respostas
Alex Lekao
13/02/2015
Ola Waldir, boa tarde!!
Nao conheco postgree, so uma duvida, os resultados estao aparecendo linha a linha, certo? uma avaliacao embaixo da outra.
Se nao estou enganado a forma de fazer tudo na mesma linha vc teria que fazer um pivot, nao sei se o PostGree faz pivot.
Caso nao seja isso ou se entendi errado, me desculpe.
Abraco.
Nao conheco postgree, so uma duvida, os resultados estao aparecendo linha a linha, certo? uma avaliacao embaixo da outra.
Se nao estou enganado a forma de fazer tudo na mesma linha vc teria que fazer um pivot, nao sei se o PostGree faz pivot.
Caso nao seja isso ou se entendi errado, me desculpe.
Abraco.
GOSTEI 0
Marisiana Battistella
13/02/2015
Eu entendi da mesma forma que o Alex descreveu.
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
GOSTEI 0
Ronaldo Lanhellas
13/02/2015
Eu entendi da mesma forma que o Alex descreveu.
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
Correto, a única forma de fazer isso no postgresql é usando CROSSTAB.
GOSTEI 0
Ronaldo Lanhellas
13/02/2015
Eu entendi da mesma forma que o Alex descreveu.
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
Se for isso, no PostgreSQL temos a CROSSTAB que possui a mesma finalidade do PIVOT do Oracle.
Veja os exemplos de como utilizar esse recurso [url]http://www.postgresql.org/docs/9.1/static/tablefunc.html[/url]
Correto, a única forma de fazer isso no postgresql é usando CROSSTAB.
GOSTEI 0
Waldir Neto
13/02/2015
exatamente isso, se o usuário tiver varias avaliacoes fica :
usu1 - ava1
usu1 - ava2
usu1 - ava3
valeu pela dica galera! se resolver volto aqui!!
usu1 - ava1
usu1 - ava2
usu1 - ava3
valeu pela dica galera! se resolver volto aqui!!
GOSTEI 0
Marisiana Battistella
13/02/2015
Por nada!!
Conte-nos se conseguiu fazer e se utilizou o CROSSTAB...
Conte-nos se conseguiu fazer e se utilizou o CROSSTAB...
GOSTEI 0
Waldir Neto
13/02/2015
galera o postgre acusa o seguinte erro:
função crosstab(unknown, integer) não existe.
vcs tem alguma ideia de como resolver essa situacao?
função crosstab(unknown, integer) não existe.
vcs tem alguma ideia de como resolver essa situacao?
GOSTEI 0
Ronaldo Lanhellas
13/02/2015
O seu primeiro argumento deve ser "text", tenta fazer um cast explícito, assim:
crosstab(coluna::text, valor_integer)
GOSTEI 0
Marisiana Battistella
13/02/2015
Poderia postar o código SQL que está executando?
GOSTEI 0
Marisiana Battistella
13/02/2015
Poderia postar o código SQL que está executando?
GOSTEI 0