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

Mysql, como creo algo similar a eval?

Estas en el tema de Mysql, como creo algo similar a eval? en el foro de Bases de Datos General en Foros del Web. tengo una tabla que contiene campos llamados campo1 campo2 campo3 (en una sola fila) y en otra tabla tengo el numero de campo es decir ...
  #1 (permalink)  
Antiguo 05/07/2005, 15:30
 
Fecha de Ingreso: julio-2003
Mensajes: 95
Antigüedad: 20 años, 9 meses
Puntos: 0
Mysql, como creo algo similar a eval?

tengo una tabla que contiene campos llamados
campo1
campo2
campo3
(en una sola fila)

y en otra tabla tengo el numero de campo es decir
id_campo= 1; id_campo = 2 , id_campo = 3; (para distintas filas)

el problema es que quiero tomar los valores de campo1 si id_campo es 1,
el de campo2 si id_campo =2. etc


seria algo asi SELECT t1.id_campo, "en esta lugar debe aparecer t2.campo+t1.id_campo" FROM tabla1 t1, tabla2 t2

quiero algo asi como un eval es decir eval('t1.campo'+t2.id_campo)
  #2 (permalink)  
Antiguo 06/07/2005, 00:30
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Utiliza el Case para que en función del valor del id_campo te muestre el dato del campo deseado.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #3 (permalink)  
Antiguo 06/07/2005, 15:24
 
Fecha de Ingreso: julio-2003
Mensajes: 95
Antigüedad: 20 años, 9 meses
Puntos: 0
El problema es que el numero de campos no es fijo es decir id_campo puede valer 1 o 20 o n dependiedo del modeo
tu idea es case
CASE

WHEN id_campo= 1
THEN SELECT campo1
WHEN id_campo= 2
THEN SELECT campo2
WHEN id_campo= 3
THEN SELECT campo3
WHEN id_campo= n
THEN SELECT campon
pero esto me restringe a tener solamente n campos y no n + m siendo m desconocido
  #4 (permalink)  
Antiguo 07/07/2005, 01:42
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Pues entonces, que yo sepa, no tienes ninguna opción en Mysql para hacer lo que deseas. Tendrías que seleccionar todos los campos y en tiempo de programa seleccionar el dato que te interesa, donde si tienes el eval.
Todas las posibilidades que se me ocurren para poder hacer esto por sql tienen la misma limitación: el número variable de valores.
Sólo si tienes la versión 5.x que admite procedimientos almacenados podrías hacerlo de manera no condicionada.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #5 (permalink)  
Antiguo 07/07/2005, 09:34
 
Fecha de Ingreso: julio-2003
Mensajes: 95
Antigüedad: 20 años, 9 meses
Puntos: 0
OK, Gracias Vice
  #6 (permalink)  
Antiguo 07/07/2005, 10:18
 
Fecha de Ingreso: julio-2003
Mensajes: 95
Antigüedad: 20 años, 9 meses
Puntos: 0
otra similar quizas me puedas ayudar
nesecito recuperar los datos de una tabla cuyo nombre esta dado como campo de otra tabla
seria algo asi pero no me funciona, es posible que sea la version de mysql?
SELECT * FROM (SELECT nombre_tabla FROM TABLA WHERE id_tabla = 1 )
  #7 (permalink)  
Antiguo 08/07/2005, 03:17
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
El problema es el mismo de antes, no cambia nada. Salvo que si está el nombre de la tabla en otro lado, por programa puedes ir a buscar ese nombre de tabla y preparar la sentencia posterior ya con el nombre puesto.
Un saludo.
__________________
Estoy contagiado de Generación-I
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 04:02.