Jeg havde samme problem. Jeg ønskede at oprette en visning for at vise oplysninger fra det seneste år fra en tabel med poster fra 2009 til 2011. Her er den oprindelige forespørgsel:
SELECT a.*
FROM a
JOIN (
SELECT a.alias, MAX(a.year) as max_year
FROM a
GROUP BY a.alias
) b
ON a.alias=b.alias and a.year=b.max_year
Oversigt over løsning:
- opret en visning for hver underforespørgsel
- erstat underforespørgsler med disse visninger
Her er løsningsforespørgslen:
CREATE VIEW v_max_year AS
SELECT alias, MAX(year) as max_year
FROM a
GROUP BY a.alias;
CREATE VIEW v_latest_info AS
SELECT a.*
FROM a
JOIN v_max_year b
ON a.alias=b.alias and a.year=b.max_year;
Det fungerer fint på mysql 5.0.45, uden meget af en hastighedsstraf (sammenlignet med at udføre den oprindelige underforespørgsel uden nogen visninger).