los documentos de MySQL dicen: "No se puede hacer referencia a una tabla TEMPORAL más de una vez en la misma consulta".¿Cómo puedo hacer referencia a una tabla TEMPORAL más de una vez en la misma consulta?
Sé que esto se ha pedido antes. Pero no puedo encontrar una solución específica para lo siguiente.
estoy haciendo una preselección en una tabla temporal
CREATE TEMPORARY TABLE preselection AS SELECT ...;
ahora quiero hacer algo (en torno a 20 o incluso 30) uniones
(SELECT FROM preselection ...)
UNION
(SELECT FROM preselection ...)
UNION
......
UNION
(SELECT FROM preselection ...)
que podría hacer 20 o 30 copias de preselección y seleccione cada una en cada tabla, pero si lo entiendo bien, esto es lo mismo que invocar la consulta de preselección de arriba en cada SELECCIÓN dentro de la cadena de la UNIÓN como una subconsulta.
¿Hay alguna forma de evitar este problema?
Saludos,
chris
consulta completa:
CREATE TEMPORARY TABLE preselection AS
(
SELECT id, title, chapter, date2, date, snid, max(score) FROM `movies`
WHERE
(
cluster is not NULL
)
AND
(
`date` <= '2012-02-20 05:20:00'
AND `date` > '2012-02-19 17:20:00'
AND (TIMEDIFF(date, date2) < '12:00:00')
)
GROUP BY cluster
)
UNION
(
SELECT id, title, chapter, date2, date, snid, score FROM `movies`
WHERE cluster IS NULL
AND
(
`date` <= '2012-02-20 05:20:00' AND `date` > '2012-02-19 17:20:00' AND (TIMEDIFF(date, date2) < '12:00:00')
)
);
(SELECT * FROM preselection WHERE snid=1 AND chapter LIKE '#A_OT%'
DESC LIMIT 4)
UNION
…
UNION
(SELECT * FROM preselection WHERE snid=19 AND chapter LIKE '#A_OT%'
LIMIT 4)
UNION
... for each chapter from A to J and every snid from 1 to 19 ...
UNION
(SELECT * FROM preselection WHERE snid=1 AND chapter LIKE '#J_OT%'
LIMIT 4)
UNION
…
UNION
(SELECT * FROM preselection WHERE snid=19 AND chapter LIKE '#J_OT%'
LIMIT 4)
ORDER BY `score` DESC, `date`;
posible duplicado de [Acceso a una tabla temporal varias veces en MySql] (http://stackoverflow.com/questions/4078873/accessing-a -temporary-table-multiple-times-in-mysql) –
¿Puedes mostrar la consulta completa y real? Podría ayudarnos a encontrar ideas para una solución alternativa que no requiera agregar la tabla temporal varias veces. – JohnFx
Quizás es una buena idea. Aquí está mi consulta completa, realmente no tengo ni idea de cómo hacerlo de una manera diferente. (AGREGADO AL PUESTO) –