[pgbr-geral] REF. MONTAR SELECT #02.

2010-11-01 Por tôpico VisualP Sistemas
Ola Pessoal,
No select abaixo tenho o retorno:

SELECT
   cli.nome,
   dep.nome,
   dep.parentesco,
   pla.valor
  FROM (SELECT c.idcli,
   c.nome
   count(*) as qtde_dependente
  FROM cliente c
   INNER JOIN dependente d ON d.idcli = c.idcli
 GROUP BY c.idcli,
  c.nome) AS cli
   INNER JOIN dependente dep ON dep.idcli = cli.idcli
   INNER JOIN plano pla  ON pla.qtde_dependente = 
cli.qtde_dependente;
CLIENTEDEPENDENTEVALOR
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)   9,90
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a) 14,90
MILA TULA  Fofinha  Filho(a)  14,90
PAULOPaulinhoFilho(a)4,90

Preciso pegar somente primeiro valor, ex:
JUCA  JuquinhaFilho(a)  9,90
JUCA  Mariazinha Filho(a)
MILA TULA  Milinha  Filho(a)  14,90
MILA TULA  Ritinha   Filho(a)
MILA TULA  Fofinha  Filho(a)
PAULOPaulinhoFilho(a)4,90

Isto porque o valor nao é por dependente e sim por cliente.

Alguem tem alguma dica ?

Obrigado.

Paulo.]

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT #02.

2010-11-01 Por tôpico Osvaldo Kussama
Em 1 de novembro de 2010 08:42, VisualP Sistemas p@terra.com.br escreveu:
 Ola Pessoal,
 No select abaixo tenho o retorno:

 SELECT
       cli.nome,
       dep.nome,
       dep.parentesco,
       pla.valor
  FROM (SELECT c.idcli,
               c.nome
               count(*) as qtde_dependente
          FROM cliente c
               INNER JOIN dependente d ON d.idcli = c.idcli
         GROUP BY c.idcli,
                  c.nome) AS cli
       INNER JOIN dependente dep ON dep.idcli = cli.idcli
       INNER JOIN plano pla      ON pla.qtde_dependente =
 cli.qtde_dependente;
 CLIENTE    DEPENDENTE            VALOR
 JUCA          Juquinha    Filho(a)      9,90
 JUCA          Mariazinha Filho(a)       9,90
 MILA TULA  Milinha      Filho(a)      14,90
 MILA TULA  Ritinha       Filho(a)     14,90
 MILA TULA  Fofinha      Filho(a)      14,90
 PAULO        Paulinho    Filho(a)        4,90

 Preciso pegar somente primeiro valor, ex:
 JUCA          Juquinha    Filho(a)      9,90
 JUCA          Mariazinha Filho(a)
 MILA TULA  Milinha      Filho(a)      14,90
 MILA TULA  Ritinha       Filho(a)
 MILA TULA  Fofinha      Filho(a)
 PAULO        Paulinho    Filho(a)        4,90

 Isto porque o valor nao é por dependente e sim por cliente.

 Alguem tem alguma dica ?



Se você precisar listar todos os dependentes uma possível solução é
utilizar a função de agregação array_agg [1], só que neste caso todos
os dependentes estariam em um único campo da saida.

SELECT , array_agg(dependente) .  GROUP BY cliente, valor

Ficaria mais ou menos assim:
JUCA  {JuquinhaFilho(a),Mariazinha Filho(a)}  9,90
MILA TULA  {Milinha  Filho(a),Ritinha   Filho(a),Fofinha
Filho(a)} 14,90
PAULO{PaulinhoFilho(a)}4,90

Osvaldo
[1] http://www.postgresql.org/docs/current/interactive/functions-aggregate.html
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] REF. MONTAR SELECT #02.

2010-11-01 Por tôpico VisualP Sistemas
Ola Osvaldo,

Neste caso para mim, é melhor controlar pelo codigo PHP.
Estou tentando aqui, se nao conseguir entao passarei para plano B. (PHP)

Obrigado.



- Original Message - 
From: Osvaldo Kussama osvaldo.kuss...@gmail.com
To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Sent: Monday, November 01, 2010 11:25 AM
Subject: Re: [pgbr-geral] REF. MONTAR SELECT #02.


Em 1 de novembro de 2010 08:42, VisualP Sistemas p@terra.com.br 
escreveu:
 Ola Pessoal,
 No select abaixo tenho o retorno:

 Isto porque o valor nao é por dependente e sim por cliente.

 Alguem tem alguma dica ?


Se você precisar listar todos os dependentes uma possível solução é
utilizar a função de agregação array_agg [1], só que neste caso todos
os dependentes estariam em um único campo da saida.

SELECT , array_agg(dependente) .  GROUP BY cliente, valor

Ficaria mais ou menos assim:
JUCA  {JuquinhaFilho(a),Mariazinha Filho(a)}  9,90
MILA TULA  {Milinha  Filho(a),Ritinha   Filho(a),Fofinha
Filho(a)} 14,90
PAULO{PaulinhoFilho(a)}4,90

Osvaldo
[1] 
http://www.postgresql.org/docs/current/interactive/functions-aggregate.html
___

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral