Du mangler det faktum, at visninger i MySQL ikke tillader underforespørgsler i from klausul. De er tilladt i select og where og having klausuler dog.
dokumentationen er helt klart:
I dit tilfælde kan du sandsynligvis omskrive from klausul som en korreleret underforespørgsel i select klausul. Du kan også bruge flere lag af visninger til at gøre, hvad du vil.
EDIT:
En SELECT-sætning i SQL har følgende klausuler:SELECT , FROM , WHERE , GROUP BY , HAVING , og ORDER BY (ifølge standarden). Derudover tilføjer MySQL ting som LIMIT , og INTO OUTFILE . Du kan se dette på den måde, MySQL beskriver SELECT klausul i dokumentationen
. Du kan også se dette i dokumentationen til næsten enhver database.
Handlinger såsom join er en del af FROM klausul (tilsvarende WITH ROLLUP er en del af GROUP BY og DESC er en del af ORDER BY ). Disse kan virke som mystiske syntaktiske konventioner, men det bliver vigtigt, når der er en begrænsning som den ovenfor.
En af grundene til forvirringen er måske en indrykningsstil, der lyder sådan:
select . . .
from t1
inner join t2
on . . .
Hvor join-sætningerne står på linje under select . Dette er misvisende. Jeg ville skrive dette som:
select
from t1 join
t2
on . . .
Kun select klausuler er på linje under select.