Lo que no veo por qué no los almacenas en la tabla,
¿probaste si hay detrimento del rendimiento?

No optimices de forma prematura, prueba y leugo optimiza.


El 6/23/2011 8:39 AM, Luis escribió:
Hola,

Necesito una mano de los colegas con esta consulta.

Tengo estas dos tablas:

mani=# select * from productos;
 id_pro |      descripcion
--------+-----------------------
      1 | maní
      2 | papel
      3 | sal
      4 | azúcar
      5 | pasaje y alimentación
(5 filas)

mani=# select * from ventas;
 id_ven |   fecha    | cantidad_mani | id_inv
--------+------------+---------------+--------
      1 | 2011-06-22 |           6.0 |      1
(1 fila)

y necesito obtener los siguientes datos.

fecha | cantidad_mani | ventas_estimadas(cantidad_mani*30) | inversión(cantidad_mani*15) | ganancia(ventas_estimadas - inversión)

Estaba probando así, y todo bien

mani=# select fecha, cantidad_mani, cantidad_mani*30 as ventas_estimadas, cantidad_mani*(select precio from inversion_productos where id_pro=1) as inversion from ventas;

   fecha    | cantidad_mani | ventas_estimadas | inversion
------------+---------------+------------------+-----------
 2011-06-22 |           6.0 |            180.0 |    96.000
(1 fila)

pero cuando trato de calcular la ganancia,

mani=# select fecha, cantidad_mani, cantidad_mani*30 as ventas_estimadas, cantidad_mani*(select precio from inversion_productos where id_pro=1) as inversion, ventas_estimadas-inversion as ganancia from ventas;
ERROR:  no existe la columna «ventas_estimadas»
LÍNEA 1: ...inversion_productos where id_pro=1) as inversion, ventas_est...

como ventas_estimadas e inversion no son campos de la tabla no puedo usarlos en el cálculo. Qué pues me sugieren?

Inicialmente introducía todos los datos a la tabla pero consideré que era mejor guardar solo algunos y los demás calcularlos a partir de estos. Es elegante esto o es mejor guardarlos todos para ganar en velocidad a coste del tamaño de la db?

Desde ya, muchas gracias


--
Marcos Luís Ortíz Valmaseda
 Software Engineer (UCI)
 http://marcosluis2186.posterous.com
 http://twitter.com/marcosluis2186
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a