[pgsql-ayuda] Problemas con VIEWS

From: <lrgallardo(at)abl(dot)com(dot)mx>
To: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: [pgsql-ayuda] Problemas con VIEWS
Date: 2000-12-20 17:32:23
Message-ID: 14912.60711.284165.171306@ingrid.andrade.casa
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Mario Coello writes:
>
> He creado dos tablas, con algn contenido de prueba:
>
> select * from tabla1;
>
> idconcepto | total
> ------------+-------
> 2 | 2000
> 1 | 1000
> 3 | 3000
> 2 | 2000
> 3 | 3000
> 1 | 1000
> (6 rows)
>
> select * from tabla2;
>
> idconcepto | total
> ------------+-------
> 2 | 2000
> 3 | 3000
> 1 | 1000
> 4 | 4000
> (4 rows)
>
> Sobre estas tablas he creado dos vistas:
> create view suma1 as select idconcepto, sum(total) from tabla1 group
> by idconcepto;
> create view suma2 as select idconcepto, sum(total) from tabla2 group
> by idconcepto;
>
> El problema viene ahora. Se trata de que el contenido que me muestran
> las vistas por separado no es el mismo que el que me muestran cuando las
> visualizo juntas. Aqu�va un ejemplo (directamente copiado de la consola de
> psql):
>
> select * from suma1;
>
> idconcepto | total1
> ------------+--------
> 1 | 2000
> 2 | 4000
> 3 | 6000
> (3 rows)
>
> select * from suma2;
>
> idconcepto | total2
> ------------+--------
> 1 | 1000
> 2 | 2000
> 3 | 3000
> 4 | 4000
> (4 rows)
>
> select * from suma1, suma2 where suma1.idconcepto = suma2.idconcepto;
> idconcepto | total1 | idconcepto | total2
> ------------+--------+------------+--------
> 1 | 2000 | 1 | 2000
> 2 | 4000 | 2 | 4000
> 3 | 6000 | 3 | 6000
> (3 rows)
>
> Alguien puede decirme qu�sucede? Es normal o es un fallo del PostgreSQL?
> Gracias a todos.
Es normal. Para ver que est�pasando, expande la sentencia que se ejecuta:

select t2.id, sum(t1.tot), sum(t2.tot) from tabla1 t1, tabla2 t2 where t1.id=t2.id group by t2.id;

y ejecutala quitando el group by:

select t2.id, sum(t1.tot), sum(t2.tot) from tabla1 t1, tabla2 t2 where t1.id=t2.id;

Esto te regresa:

id | tot | tot
----+------+------
1 | 1000 | 1000
1 | 1000 | 1000
2 | 2000 | 2000
2 | 2000 | 2000
3 | 3000 | 3000
3 | 3000 | 3000
(6 rows)

Que al totalizar da lo que encontraste. Si te preguntas por que es
as� es por que en tu tabla 1 hay dos hileras para cada id.

Le paso al alguien m� la bolita de como resolver tu pregunta original
:-)

--
--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo(at)tlali(dot)iztacala(dot)unam(dot)mx
text : unsubscribe pgsql-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Bolo Lacertus 2000-12-20 21:04:02 Re: [pgsql-ayuda] Como acceder Postgres con PHP
Previous Message Mario Coello 2000-12-20 16:18:02 [pgsql-ayuda] Problemas con VIEWS