Sie übersehen, dass Ansichten in MySQL keine Unterabfragen im from zulassen Klausel. Sie sind im select erlaubt und where und having Klauseln jedoch.
Die Dokumentation ist ganz klar:
In Ihrem Fall können Sie wahrscheinlich den from umschreiben -Klausel als korrelierte Unterabfrage im select Klausel. Sie können auch mehrere Ebenen von Ansichten verwenden, um zu tun, was Sie wollen.
BEARBEITEN:
Eine SELECT-Anweisung in SQL hat die folgenden Klauseln:SELECT , FROM , WHERE , GROUP BY , HAVING , und ORDER BY (nach Norm). Außerdem fügt MySQL Dinge wie LIMIT hinzu , und INTO OUTFILE . Sie können dies daran erkennen, wie MySQL den SELECT beschreibt -Klausel in der Dokumentation
. Sie können dies auch in der Dokumentation für fast jede Datenbank nachlesen.
Operationen wie join sind Teil von FROM -Klausel (ähnlich WITH ROLLUP ist Teil von GROUP BY und DESC ist Teil des ORDER BY ). Dies mag wie obskure syntaktische Konventionen erscheinen, aber es wird wichtig, wenn es eine Einschränkung wie die obige gibt.
Vielleicht ist ein Grund für die Verwirrung ein Einrückungsstil, der so aussieht:
select . . .
from t1
inner join t2
on . . .
Wo die Join-Anweisungen unter select ausgerichtet sind . Das ist irreführend. Ich würde dies schreiben als:
select
from t1 join
t2
on . . .
Nur die select Klauseln reihen sich unter select. auf