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.