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
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 |