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