Cita: Una consulta, de las más complejas que hay en la web y que tarda mucho es la siguiente:
La consulta es "compleja" porque está basada en una tabla sin normalizar. De allí que necesites hacer cosas normalmente inexistentes.
Para mantener la base sin tocar, y tratar de hacerla más eficiente, hay que forzar el uso de ciertas funciones que no serían necesarias en tablas bien definidas.
Esto sería un acercamiento:
Código MySQL:
Ver original un . *,
es.titulo,
es.descripcion,
po.nombre_poblacion,
ti.nombre_tipo_ca,
op.operacion_tipo_ca
un.id_piso = es.id_piso
AND un.poblacion
= po.id_poblacion
AND un.operacion
= op.id_operacion
AND FIND_IN_SET((SELECT CONCAT(first, ', ', second, ', ', third
, ', ', forth
, ', ', fifth
, ', ', sixth
) WHERE id_cat
= 3), un.referencia
)
REspecto a la segunda, el sólo hecho de que estés definiendo los nombres de las tablas dinámicamente de esa forma, me habla de problemas de diseño mayores aún. Por otro lado, no nos sirve que postees código de programación (cosa que desde ya es OFF TOPIC), sino que en todo caso necesitaríamos que nos postearas la sentencia como finalmente queda creada, es decir lo que MySQL realmente recibe.