2010-09-05 8 views
12
SELECT var1,var2,var3,table_name 
FROM table1 LEFT JOIN table_name on var3=table_name.id 

Significado Quiero izquierda dinámicamente tabla de unión, dependiendo del valor de table_name de table1, ya var3 se toma a partir de ahí.consulta MySQL utilizando como variable nombre de tabla en LEFT JOIN

embargo, los anteriores resultados de la consulta en

tabla nombre_tabla no existe

Mi error de la limitación de MySQL?

+0

No creo que pueda hacer esto. Es probable que necesite pasar el nombre de la tabla a un procedimiento almacenado si desea este tipo de funcionalidad o rediseñar lo que está tratando de hacer. – spig

+1

No es una limitación de MySQL. Más como limitación de SQL si puede llamarlo así, pero diría que es una indicación de que algo anda mal con el diseño de su base de datos. – Mchl

+0

La tabla principal contiene objetos. Cada objeto puede tener atributos. Hay tablas separadas para cada atributo que enumera valores posibles: los valores pueden ser muy largos (varios cientos de caracteres) y hay muchos valores posibles (miles). Así que la tabla principal tiene 2 campos por atributo: attr_table_name, attr_table_id - para ahorrar espacio y permitir la modificación del nombre del atributo. Cuando se ejecuta la consulta, devuelvo el valor real del atributo, no el ID, por eso necesito LEFT JOIN y el nombre dinámico de la tabla. ¿De qué otro modo diseñaría la base de datos? – selytch

Respuesta