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

es posible una sql como esta sin programacion

Estas en el tema de es posible una sql como esta sin programacion en el foro de Mysql en Foros del Web. Tengo un campo llamado temporal_desactivado donde almaceno una cadena de este tipo: temporal_desactivado desactivado 2 dias desactivado 5 dias activado 1 dias necesito recuperar el ...
  #1 (permalink)  
Antiguo 21/05/2016, 05:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
es posible una sql como esta sin programacion

Tengo un campo llamado temporal_desactivado donde almaceno una cadena de este tipo:


temporal_desactivado
desactivado 2 dias
desactivado 5 dias
activado 1 dias


necesito recuperar el total de dias desactivado es decir 7, esto es posible con sql o ya tengo que programar?
saludos
  #2 (permalink)  
Antiguo 21/05/2016, 07:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: es posible una sql como esta sin programacion

Mira, para poder lograr sumar algo, necesitas separar los números del resto de lo que hay alllí... y eso sólo se puede lograr programando. Ya sea que lo hagas en la aplicación, o lo hagas en una stored function, sigue siendo tema de programación.

Tu problema es que lo que tienes allí son datos basura.
Si un campo se diseña para almacenar magnitudes escalares, este campo debe ser numérico y JAMAS se deben almacenar datos para usos matemáticos en VARCHAR, y MENOS AUN mezclados con texto.
SI el tema es que podías necesitar guardar diferentes unidades de medida de tiempo en un mismo sitio, esto tiene otras soluciones (y empeora el problema de programación), que NO pasan por corromper el modelo de almacenamiento.
Así como lo tienes, ese tipo de datos no sirve para cálculos de SQL, y con los datos que hayas guardado, tal vez suceda que tampoco sirva para hacerlo programáticamente...

Ten en cuenta, por ejemplo, que "activado" y "desactivado" son diferentes ESTADOS de algo, y eso significa que son un atributo propio de la entidad representada. En ese caso, lo que deberías tener es un campo "estado", también numérico, que determine eso y permita hacer consultas con discriminaciones fáciles de lograr. Lo que seguro NO deberías haber hecho es almacenar una cadena de texto que diga "activado" y "desactivado", y menos aún mezclarla con el valor numérico del tiempo.

Hay mucho para corregir...

Como muchas veces he comentado, diseñar una base de datos no es pensar en los procesos que vas a hacer en la aplicación y como los vas a mostrar, sino pensar en los datos como componentes abstractos que alimentan los procesos.
No es lo mismo.

Nota: Ese concepto no lo inventé yo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 21/05/2016 a las 07:19
  #3 (permalink)  
Antiguo 21/05/2016, 09:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.201
Antigüedad: 12 años, 11 meses
Puntos: 10
Respuesta: es posible una sql como esta sin programacion

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Mira, para poder lograr sumar algo, necesitas separar los números del resto de lo que hay alllí... y eso sólo se puede lograr programando. Ya sea que lo hagas en la aplicación, o lo hagas en una stored function, sigue siendo tema de programación.

Tu problema es que lo que tienes allí son datos basura.
Si un campo se diseña para almacenar magnitudes escalares, este campo debe ser numérico y JAMAS se deben almacenar datos para usos matemáticos en VARCHAR, y MENOS AUN mezclados con texto.
SI el tema es que podías necesitar guardar diferentes unidades de medida de tiempo en un mismo sitio, esto tiene otras soluciones (y empeora el problema de programación), que NO pasan por corromper el modelo de almacenamiento.
Así como lo tienes, ese tipo de datos no sirve para cálculos de SQL, y con los datos que hayas guardado, tal vez suceda que tampoco sirva para hacerlo programáticamente...

Ten en cuenta, por ejemplo, que "activado" y "desactivado" son diferentes ESTADOS de algo, y eso significa que son un atributo propio de la entidad representada. En ese caso, lo que deberías tener es un campo "estado", también numérico, que determine eso y permita hacer consultas con discriminaciones fáciles de lograr. Lo que seguro NO deberías haber hecho es almacenar una cadena de texto que diga "activado" y "desactivado", y menos aún mezclarla con el valor numérico del tiempo.

Hay mucho para corregir...

Como muchas veces he comentado, diseñar una base de datos no es pensar en los procesos que vas a hacer en la aplicación y como los vas a mostrar, sino pensar en los datos como componentes abstractos que alimentan los procesos.
No es lo mismo.

Nota: Ese concepto no lo inventé yo.
Tienes razon lo mejor sera cambiar la estructura, gracias.

Etiquetas: campo, posible, programacion, sql
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 11:44.