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

[Mysql] Inner Join y Columnas Calculadas

Estas en el tema de [Mysql] Inner Join y Columnas Calculadas en el foro de Mysql en Foros del Web. Código: puedo usar en una clausula ON de un INNER JOIN una columna calculada? Les dejo el siguiente ejemplo con el que vengo trabajando este ...
  #1 (permalink)  
Antiguo 15/03/2012, 06:24
 
Fecha de Ingreso: marzo-2012
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta [Mysql] Inner Join y Columnas Calculadas

Código:
puedo usar en una clausula ON de un INNER JOIN una columna calculada?

Les dejo el siguiente ejemplo con el que vengo trabajando este problema:

LA TABLA

+------+---------+--------+---------+

| id   | nombre  | codigo | tamanio |

+------+---------+--------+---------+

|    1 | Pelota3 |    100 |     420 |

|    2 | Carpa1  |    200 |     445 |

|    3 | Pelota2 |    100 |     440 |

|    4 | Carpa2  |    200 |     340 |
|    5 | Carpa3  |    100 |     350 |

|    6 | Pelota4 |    100 |     380 |

+------+---------+--------+---------+
LA CONSULTA

Código:
#
mysql> SELECT T1.* FROM tabla T1
#
    -> INNER JOIN
#
    -> (SELECT codigo, MIN(ABS(tamanio-400)) diferencia
#
    -> FROM tabla GROUP BY codigo) T2
#
    -> ON T1.codigo = T2.codigo AND ABS(T1.tamanio - 400) = T2.diferencia
#
    -> ORDER BY codigo;
para evitarme volver a hacer la cuenta de la columna calculada me gustaria poder volver a usarla en la clausula, poque si en ves de una resta, es una susecion de multiplicaciones restada por otras multiplicaciones, gasto bastantes recursos

Muchas Gracias
  #2 (permalink)  
Antiguo 15/03/2012, 06:32
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: [Mysql] Inner Join y Columnas Calculadas

No puedes, porque el FROM se usa para determinar las tablas de origen de datos y sus relaciones.
En el punto de ejecución, los valores de la columna aún no existen, por lo que no los encontrará.

Por lo demás, si lo que tienes son operaciones distintas e incompatibles, originadas por distintos requisitos, lo que debes hacer es crear diferentes consultas, no complicar las cosas.
Keep it 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 15/03/2012, 11:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: [Mysql] Inner Join y Columnas Calculadas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No puedes, porque el FROM se usa para determinar las tablas de origen de datos y sus relaciones.
En el punto de ejecución, los valores de la columna aún no existen, por lo que no los encontrará.

Por lo demás, si lo que tienes son operaciones distintas e incompatibles, originadas por distintos requisitos, lo que debes hacer es crear diferentes consultas, no complicar las cosas.
Keep it simple...
Hola, antes que nada gracias por la respuesta!
Sucede que mas consultas significan tambien mas recursos.
En este momento la consulta verdadera (una un poco mas compleja que la que postie) esta demorando 0.0017 seg en ejecutarse.
Se que si no tubiera que calcular 3 veces el valor de la columna calculada podria disminuir ese tiempo.
pero bueno, si no se puede no se puede.
Muchisimas gracias por la explicacion

Etiquetas: calculadas, columnas, innerjoin
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 12:24.