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

Explode field

Estas en el tema de Explode field en el foro de Mysql en Foros del Web. Hola gente, tengo una linda tabla que registra transacciones de una manera muy particular. Transaccion trs_id trs_values 1 PRODUCTO_15##SEP##1##SEP##1,100.00##SEP## 2 PRODUCTO_12##SEP##5##SEP##5,100.00##SEP## 3 PRODUCTO_16##SEP##9##SEP##2,100.00##SEP## SI HAGO ...
  #1 (permalink)  
Antiguo 25/04/2013, 06:53
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Explode field

Hola gente, tengo una linda tabla que registra transacciones de una manera muy particular.
Transaccion

trs_id trs_values

1 PRODUCTO_15##SEP##1##SEP##1,100.00##SEP##
2 PRODUCTO_12##SEP##5##SEP##5,100.00##SEP##
3 PRODUCTO_16##SEP##9##SEP##2,100.00##SEP##

SI HAGO ESTA QUERY

SELECT REPLACE( `trs_values` , "##SEP##", " " )
FROM `transaccion`

me devuelve

PRODUCTO_15 1 1,100.00
PRODUCTO_12 5 5,100.00
PRODUCTO_16 9 2,100.00

lo que significa que la primer columna es el producto, el segundo la cantidad y el tercer valor es el precio. esto facilmente se resuelve con php, pero debo hacerlo en mysql.

la pregunta es:

Como puedo hacer para multiplicar la cantidad por el precio?

deberia poder hacerse con algun tipo de explode, pero desconozco que que pueda hacer en mysql.

y si puedo hacer el explode y obtener esos tener valores para mostrarlos como yo quiero mejor!

saludos
  #2 (permalink)  
Antiguo 25/04/2013, 07:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Explode field

Es que eso no se puede hacer en MySQL, y tener una tabla así en la base es un espanto (un multivaluado con dominio indeterminable)
Los sistemas donde se usan tablas transaccionales de ese tipo lo que hacen luego es tomar por aplicación y normalizar ese registro, pero nunca lo procesan así.
Sólo te queda usar substring_index(), pero desde ya te diría que esa etapa la hagas en la aplicación. Especialmente la normalización de ese conjunto de trash-data.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/04/2013, 07:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Explode field

Bueno buscando un poco encontre como explotar y pude hacer la multiplicacion:

SELECT `trs_values` , SUBSTRING_INDEX( `trs_values` , '##SEP##', 1 ) AS a, SUBSTRING_INDEX( SUBSTRING_INDEX( `trs_values` , '##SEP##', 2 ) , '##SEP##' , -1 ) * SUBSTRING_INDEX( SUBSTRING_INDEX( `trs_values` , '##SEP##', -2 ) , '##SEP##', 1 ) AS total
FROM transaction


espero a otro le sirva, salutes!
  #4 (permalink)  
Antiguo 25/04/2013, 07:11
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Explode field

gnzsoloyo, gracias por el comentario, es muy cierto lo que decis pero aveces las politicas de la empresa lo disponen asi por X MOTIVO, o por que fue la mejor solucion del momento.

La verdad era mas facil sacar un reporte con php con todos los metodos que me resuelven el problema, pero esta vez lo tuve que hacer directamente con mysql
  #5 (permalink)  
Antiguo 25/04/2013, 07:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Explode field

Como te dije: Stored procedure y SUBSTRING_INDEX() dentro de un LOOP.
¡Ah!... Y cursores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/04/2013, 07:16
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Explode field

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Como te dije: Stored procedure y SUBSTRING_INDEX() dentro de un LOOP.
¡Ah!... Y cursores.
lo voy a investigar, por ahora el problema esta resuelto

gracias de nuevo

Etiquetas: explode, field, php, select, sql, tabla
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




La zona horaria es GMT -6. Ahora son las 21:55.