Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Ayuda con postgresql

Estas en el tema de Ayuda con postgresql en el foro de PostgreSQL en Foros del Web. Bueno en realida el problema que tengo es que tengo un campo el cual almacena la informacion para diferentes tipos de productos y quiero saber ...
  #1 (permalink)  
Antiguo 30/04/2008, 14:48
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Pregunta Ayuda con postgresql

Bueno en realida el problema que tengo es que tengo un campo
el cual almacena la informacion para diferentes tipos de productos y quiero saber
si hay alguna forma de sacar el contenido de ese campo por producto y
en un campo por separado el cual contenga el total del producto ejemplo:

tipo || PRODUCTOA || PRODUCTOB || productoc
A || 12 || 15 || 30
B || 0 || 15 || 2
  #2 (permalink)  
Antiguo 06/05/2008, 04:59
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Ayuda con postgresql

utilizando sum() y group by.

Si das más información lo podemos mirar mejor.

Un saludo
  #3 (permalink)  
Antiguo 06/05/2008, 11:48
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Re: Ayuda con postgresql

Gracias por responder afortunadamente lo pude solucionar les dejo un pequeño ejemplo por si alguien tiene el mismo problema.



SELECT DISTINCT TABLA.CAMPO1 as C1,
(SELECT SUM(campocantidad) FROM tabla LEFT JOIN tablaunirL ON tabla.campofk=tablaunir.campoid wHERE (condicion) ) as productoa,
  #4 (permalink)  
Antiguo 07/05/2008, 01:05
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Ayuda con postgresql

mmm no es muy eficiente esa select, ten en cuenta que ejecutas 1 o varias consultas por cada campo que tengas en TABLA.

prueba algo del tipo:
Código:
select tipo, sum(productoA), sum(productoB), ....
from   tabla
left join tablaunirL on tabla.fk = tablaunir.id
where condificion
group by tipo
Un saludo
  #5 (permalink)  
Antiguo 07/05/2008, 11:11
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
Re: Ayuda con postgresql

Hola en efecto funciona pero no para lo que necesito puesto que productoA, productoB ......... salen de sumar el campo cantidad y condicionandolo con los diferentes tipos de productos.
Talves sea poco eficiente como dices tratare de ser mas explicita y acontinuacion muestro un ejemplo creo yo mas claro espero se entienda la idea de lo que quise hacer.



SELECT DISTINCT t2.t2id , t2.nombre,
(COALESCE ((SELECT SUM(cantidad) FROM tabla
LEFT JOIN tablaunir tu ON tabla.id=tu.id
wHERE tu.tipoproducto = PA and tabla.t2id = t2.t2id),0) )AS productoA

FROM tabla
LEFT JOIN t2 ON tabla.t2id=t2.t2id ;

De esta manera logre que me diera la suma del campo cantidad dependiendo el producto y dependiendo el nombre de la sucursal llamese t2.
Espero se entienda lo que intente hacer y si alguien tiene una mejor sugerencia para obtener el mismo resultado es bienvenida ya que esto es solo para un producto.
Gracias pro sus comentarios.

Última edición por mayte85; 07/05/2008 a las 11:23
  #6 (permalink)  
Antiguo 08/05/2008, 02:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Ayuda con postgresql

si pones la estructura de las tablas y un ejemplo con numeros de los que tiene y lo que esperas quedaría mucho más claro.

Para la suma de varios productos:
Código:
select	t2.t2id, t2.nombre, 
		sum(CASE WHEN tu.tipo_producto = PA THEN cantidad ELSE 0 END) as productoA,
		sum(CASE WHEN tu.tipo_producto = PB THEN cantidad ELSE 0 END) as productoB
from   	tabla
		left join t2 			ON tabla.t2id = t2.t2id
		left join tablaunir tu 	ON tabla.id = tu.id
		left join tablaunirL on tabla.fk = tablaunir.id
group by t2.t2id, t2.nombre
Un saludo
  #7 (permalink)  
Antiguo 08/05/2008, 08:57
 
Fecha de Ingreso: abril-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 0
De acuerdo Re: Ayuda con postgresql

Hola Seyko muchas gracias siun duda es mucho mejor tu respuesta funciona perfecto para lo que necesito, muchisimas gracias.
Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:11.