Te estás perdiendo el hecho de que las vistas en MySQL no permiten subconsultas en el from
cláusula. Están permitidos en el select
y where
y having
cláusulas, sin embargo.
La documentación es bastante claro:
En su caso, probablemente pueda reescribir el from
cláusula como una subconsulta correlacionada en el select
cláusula. También puede usar varias capas de vistas para hacer lo que quiera.
EDITAR:
Una declaración SELECT en SQL tiene las siguientes cláusulas:SELECT
, FROM
, WHERE
, GROUP BY
, HAVING
y ORDER BY
(según norma). Además, MySQL agrega cosas como LIMIT
, y INTO OUTFILE
. Puede ver esto en la forma en que MySQL describe el SELECT
cláusula en la documentación
. También puede ver esto en la documentación de casi cualquier base de datos.
Operaciones como join
forman parte del FROM
cláusula (de manera similar WITH ROLLUP
es parte del GROUP BY
y DESC
es parte del ORDER BY
). Estas pueden parecer convenciones sintácticas arcanas, pero se vuelven importantes cuando hay una restricción como la anterior.
Quizás una de las razones de la confusión es un estilo de sangría que dice:
select . . .
from t1
inner join t2
on . . .
Donde las declaraciones de combinación se alinean debajo de select
. Esto es engañoso. Escribiría esto como:
select
from t1 join
t2
on . . .
Solo el select
las cláusulas se alinean bajo select.