i documenti MySQL dicono: "Non è possibile fare riferimento a una tabella TEMPORARY più di una volta nella stessa query."Come posso fare riferimento a una tabella TEMPORARY più di una volta nella stessa query?
So che è stato chiesto prima. Ma non riesco a trovare una soluzione specifica per quanto segue.
sto facendo una preselezione in una tabella temporanea
CREATE TEMPORARY TABLE preselection AS SELECT ...;
Ora voglio fare un po '(circa il 20 o anche 30) unioni
(SELECT FROM preselection ...)
UNION
(SELECT FROM preselection ...)
UNION
......
UNION
(SELECT FROM preselection ...)
ho potuto fare 20 o 30 copie di preselezione ed esegui ogni selezione su ogni tabella ma, se capisco bene, è come richiamare la query di preselezione di cui sopra in ogni SELECT all'interno della catena UNION sotto forma di sottoquery.
C'è un modo per ovviare a questo problema?
Saluti,
chris
query full:
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`;
possibile duplicato di [Accesso a una tabella temporanea più volte in MySql] (http://stackoverflow.com/questions/4078873/accessing-a -temporary-table-multiple-times-in-mysql) –
Puoi mostrare la query completa e reale? Potrebbe aiutarci a trovare idee per una soluzione alternativa che non richiede l'aggiunta della tabella temporanea più volte. – JohnFx
Forse è una buona idea. Ecco la mia domanda completa, non ho davvero idea di come farlo in un modo diverso. (AGGIUNTO AL POSTO) –