Uniká vám, že pohledy v MySQL neumožňují poddotazy v from
doložka. Jsou povoleny v select
a where
a having
doložky, nicméně.
dokumentace je zcela jasné:
Ve vašem případě pravděpodobně můžete přepsat from
klauzule jako korelovaný dílčí dotaz v select
doložka. K tomu, co chcete, můžete také použít více vrstev zobrazení.
EDIT:
Příkaz SELECT v SQL má následující klauzule:SELECT
, FROM
, WHERE
, GROUP BY
, HAVING
a ORDER BY
(podle standardu). Kromě toho MySQL přidává věci jako LIMIT
a INTO OUTFILE
. Můžete to vidět tak, jak MySQL popisuje SELECT
klauzule v dokumentaci
. Můžete to také vidět v dokumentaci k téměř každé databázi.
Operace jako join
jsou součástí FROM
klauzule (podobně WITH ROLLUP
je součástí GROUP BY
a DESC
je součástí ORDER BY
). Může se to zdát jako tajemné syntaktické konvence, ale je to důležité, když existuje omezení, jako je to výše.
Možná je jedním z důvodů zmatku styl odsazení, který vypadá takto:
select . . .
from t1
inner join t2
on . . .
Kde se příkazy spojení seřadí pod select
. To je zavádějící. Napsal bych to takto:
select
from t1 join
t2
on . . .
Pouze select
klauzule seřadit pod select.