Пропускате факта, че изгледите в MySQL не позволяват подзаявки в from
клауза. Те са разрешени в select
и where
и having
клаузи обаче.
документация е съвсем ясно:
Във вашия случай вероятно можете да пренапишете from
клауза като корелирана подзаявка в select
клауза. Можете също така да използвате няколко слоя изгледи, за да правите това, което искате.
РЕДАКТИРАНЕ:
Оператор SELECT в SQL има следните клаузи:SELECT
, FROM
, WHERE
, GROUP BY
, HAVING
и ORDER BY
(според стандарта). Освен това MySQL добавя неща като LIMIT
и INTO OUTFILE
. Можете да видите това по начина, по който MySQL описва SELECT
клауза в документацията
. Можете също да видите това в документацията за почти всяка база данни.
Операции като join
са част от FROM
клауза (подобно на WITH ROLLUP
е част от GROUP BY
и DESC
е част от ORDER BY
). Това може да изглежда като тайнствени синтактични конвенции, но става важно, когато има ограничение като това по-горе.
Може би една от причините за объркването е стилът на отстъп, който звучи така:
select . . .
from t1
inner join t2
on . . .
Където операторите за присъединяване се подреждат под select
. Това е подвеждащо. Бих написал това като:
select
from t1 join
t2
on . . .
Само select
клаузите се подреждат под select.