Dokumenty MySQL mówią: "Nie można odwołać się do tabeli TYMCZASOWEJ więcej niż raz w tym samym zapytaniu."Jak mogę odnieść się do tabeli TYMCZASOWEJ więcej niż raz w tym samym zapytaniu?
Wiem, że zostało to wcześniej zadane. Ale nie mogę znaleźć konkretnego rozwiązania dla następujących elementów.
robię preselekcji do tabeli tymczasowej
CREATE TEMPORARY TABLE preselection AS SELECT ...;
teraz chcę zrobić kilka (około 20 lub nawet 30) związki
(SELECT FROM preselection ...)
UNION
(SELECT FROM preselection ...)
UNION
......
UNION
(SELECT FROM preselection ...)
mogłem zrobić 20 lub 30 kopii preselekcji i czy każdy wybierz na każdej tabeli, ale jeśli rozumiem to dobrze, to jest to samo, co wywołanie kwerendy preselekcyjnej powyżej w każdym SELECT wewnątrz łańcucha UNION jako podzapytanie.
Czy istnieje sposób obejścia tego problemu?
Pozdrowienia,
chris
Pełna zapytania:
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`;
możliwy duplikat [Uzyskiwanie dostępu do tabeli tymczasowej wiele razy w MySql] (http://stackoverflow.com/questions/4078873/accessing-a -temporary-table-multiple-times-in-mysql) –
Czy możesz pokazać pełne, prawdziwe zapytanie? Może nam to pomóc w znalezieniu rozwiązania, które nie wymaga wielokrotnego dodawania tabeli tymczasowej. – JohnFx
Może to dobry pomysł. Oto moje pełne zapytanie, naprawdę nie mam pojęcia, jak to zrobić w inny sposób. (DODANO DO POSTA) –