Brakuje Ci faktu, że widoki w MySQL nie zezwalają na podzapytania w from klauzula. Są dozwolone w select i where i having jednak klauzule.
dokumentacja jest całkiem jasne:
W twoim przypadku prawdopodobnie możesz przepisać from klauzula jako skorelowane podzapytanie w select klauzula. Możesz także użyć wielu warstw widoków, aby robić to, co chcesz.
EDYCJA:
Instrukcja SELECT w SQL zawiera następujące klauzule:SELECT , FROM , WHERE , GROUP BY , HAVING i ORDER BY (zgodnie z normą). Ponadto MySQL dodaje takie rzeczy jak LIMIT , i INTO OUTFILE . Możesz to zobaczyć w sposób, w jaki MySQL opisuje SELECT klauzula w dokumentacji
. Możesz to również zobaczyć w dokumentacji prawie każdej bazy danych.
Operacje takie jak join są częścią FROM klauzula (podobnie WITH ROLLUP jest częścią GROUP BY i DESC jest częścią ORDER BY ). Może się to wydawać tajemniczymi konwencjami składniowymi, ale staje się ważne, gdy istnieje ograniczenie takie jak powyższe.
Być może jednym z powodów zamieszania jest styl wcięcia, który wygląda następująco:
select . . .
from t1
inner join t2
on . . .
Gdzie instrukcje łączenia ustawiają się pod select . To jest mylące. Zapisałbym to jako:
select
from t1 join
t2
on . . .
Tylko select klauzule ustawiają się pod select.