Ti manca il fatto che le viste in MySQL non consentono sottoquery nel from clausola. Sono consentiti nella select e where e having clausole, tuttavia.
La documentazione è abbastanza chiaro:
Nel tuo caso, probabilmente puoi riscrivere il from clausola come sottoquery correlata in select clausola. Puoi anche utilizzare più livelli di visualizzazione per fare ciò che desideri.
MODIFICA:
Un'istruzione SELECT in SQL ha le seguenti clausole:SELECT , FROM , WHERE , GROUP BY , HAVING e ORDER BY (secondo la norma). Inoltre, MySQL aggiunge cose come LIMIT e INTO OUTFILE . Puoi vederlo nel modo in cui MySQL descrive il SELECT clausola nella documentazione
. Puoi anche vederlo nella documentazione di quasi tutti i database.
Operazioni come join fanno parte del FROM clausola (in modo simile WITH ROLLUP fa parte del GROUP BY e DESC fa parte del ORDER BY ). Queste possono sembrare convenzioni sintattiche arcane, ma diventa importante quando c'è una restrizione come quella sopra.
Forse uno dei motivi della confusione è uno stile di indentazione simile a:
select . . .
from t1
inner join t2
on . . .
Dove le istruzioni join si allineano sotto select . Questo è fuorviante. Lo scriverei come:
select
from t1 join
t2
on . . .
Solo il select le clausole si allineano sotto select.