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

[SOLUCIONADO] Consulta con valores modificados

Estas en el tema de Consulta con valores modificados en el foro de Mysql en Foros del Web. Necesito realizar una consulta en la cual los valores que se obtienen de uno de los campos salgan modificados. Tengo un listado de reservas de ...
  #1 (permalink)  
Antiguo 28/02/2013, 23:40
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Consulta con valores modificados

Necesito realizar una consulta en la cual los valores que se obtienen de uno de los campos salgan modificados. Tengo un listado de reservas de coches donde el tipo de coche está ingresado por número. Yo quiero obtener los códigos de reserva, la provincia y el tipo de coche. El tema es que en el campo coche figura siempre un número. Lo que yo quisiera hacer es reemplazar ese número por un texto. Esta es la consulta generada:

Código MySQL:
Ver original
  1. SELECT codigo, provincia, coche
  2. FROM reserva
  3. WHERE coche =  '1';
La idea sería que en lugar de 1 traiga el tipo de coche que corresponde al número 1 (por ejemplo que diga Compacto). Para este requerimiento no cuento con una tabla donde diga que el coche 1 es el compacto. Esa información no está almacenada en ninguna tabla. ¿Es esto posible?

Muchas gracias.

Última edición por gnzsoloyo; 01/03/2013 a las 06:48 Razón: SQL mal etiquetado
  #2 (permalink)  
Antiguo 01/03/2013, 06:50
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: Consulta con valores modificados

Cita:
Para este requerimiento no cuento con una tabla donde diga que el coche 1 es el compacto.
Es técnicamente posible, pero eso se denomina "hardcoding", y se considera una pésima práctica tanto en programación como en bases de datos.
Sería mucho mejor que construyas una tabla con las descripciones, y de ese modo puedes obtener los datos en una consulta muy simple.
__________________
¿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 01/03/2013, 07:45
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Consulta con valores modificados

Hola sjj, una opcion es que hagas una tabla temporal con los datos y luego la cruces, otra opcion, yo lo haría así:

Código MySQL:
Ver original
  1. SELECT codigo, provincia, IF(coche=1,'compacto',IF(coche=2,'4x4','otro')) AS coche
  2. FROM reserva

Explico un poco como funciona el IF
IF( condicion , si es true , si es false )
puedes hacer multiples condiciones, por ejemplo:
Código MySQL:
Ver original
  1. IF( coche<2 , IF( coche=0 , 'es 0' , 'es 1' ) ,  IF( coche=2 , 'es 2' , 'es mas de 2' ))

Ahora, si tienes muchos tipos de coche te conviene usar un CASE

Código MySQL:
Ver original
  1. SELECT codigo, provincia,
  2. WHEN coche=1
  3.   THEN 'compacto'
  4. WHEN coche=2
  5.   THEN '4x4'
  6. WHEN coche=3
  7.   THEN 'camioneta'
  8. WHEN coche=4
  9.   THEN 'furgon'
  10. ELSE 'otro'
  11. END) AS coche
  12. FROM reserva

explico como funciona el CASE

Código MySQL:
Ver original
  1. WHEN condicion1
  2.   THEN si condicion1 es true
  3. WHEN condicion2
  4.   THEN si condicion2 es true
  5. ELSE si todas las condiciones son false

Espero te sirva!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #4 (permalink)  
Antiguo 01/03/2013, 07:54
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: Consulta con valores modificados

Eso es precisamente lo que se denomina "hardcoding"...

__________________
¿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; 01/03/2013 a las 08:08
  #5 (permalink)  
Antiguo 01/03/2013, 07:59
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Consulta con valores modificados

thats right!

Lo ideal sería hacer una tabla con la ID y tipo de vehículo, supongo que tendrá sus razones para no hacerlo, quizás no puede modificar esa BD.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 01/03/2013, 10:21
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Consulta con valores modificados

Muchas gracias a los 2. Gnzsoloyo, entiendo que no sea una buena práctica (lo cual ya me parecía, por eso preguntaba). El problema es que a veces la base de datos ya está armada y no te dan la posibilidad de modificarla y quieren obtener esos datos. Supongo que lo mejor sería crear una tabla de codificación de coches, que de todos modos, no afectará a las demás. Pero buscaba una solución por si acaso no me permiten crear más tablas.

Gracias a ambos nuevamente!
  #7 (permalink)  
Antiguo 01/03/2013, 10:25
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: Consulta con valores modificados

Una posibilidad, combinada con la de stramin sería crear o una función que te devuelva eso, o bien un stored procedure que genere rápidamente la tabla temporary para hacer elJOIN y también devuelva el resultado.


Hay otros caminos, pero no serán tan eficientes.

El problema que te puede representar el hardconding en tu caso es que puede terminar produciendo ineficiencia en la consulta, si la tablas base se vuelve muy grande...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campos, select, 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 04:42.