[pgsql-ayuda] Problemas con VIEWS
lrgallardo@abl.com.mx
lrgallardo@abl.com.mx
Wed, 20 Dec 2000 11:32:23 -0600 (CST)
Mario Coello writes:
>
> He creado dos tablas, con algún 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ás 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@tlali.iztacala.unam.mx
text : unsubscribe pgsql-ayuda