„SELECT der Ansicht enthält eine Unterabfrage in der FROM-Klausel“: Beheben des Problems
Beim Versuch, eine Ansicht basierend auf zwei Tabellen zu erstellen, credit_orders und credit_usage gibt die Abfrage einen Fehler zurück, der besagt: „Views SELECT enthält eine Unterabfrage in der FROM-Klausel.“ Dieser Fehler tritt auf, weil die MySQL-Dokumentation das Vorhandensein von Unterabfragen in der FROM-Klausel einer Ansichts-SELECT-Anweisung ausdrücklich verbietet.
Um dieses Problem zu beheben und die Ansicht erfolgreich zu erstellen, müssen für jede Unterabfrage separate Ansichten erstellt werden. Dabei werden Zwischenansichten sowohl für die Berechnung der erworbenen Credits als auch für die Berechnung der genutzten Credits erstellt.
Für die Berechnung der gekauften Credits kann die folgende Abfrage verwendet werden:
CREATE VIEW view_purchased_credits AS SELECT client_id, SUM(number_of_credits) AS purchased FROM credit_orders GROUP BY client_id;
Für die Berechnung der genutzten Credits , kann die folgende Abfrage verwendet werden:
CREATE VIEW view_credits_used AS SELECT client_id, SUM(credits_used) AS used FROM credit_usage GROUP BY client_id;
Sobald diese Zwischenansichten erstellt wurden, ist es möglich, die Ansicht „view_credit_status“ zu erstellen Zugriff auf die Zwischenansichten:
CREATE VIEW view_credit_status AS SELECT co.client_id, v1.purchased, v2.used FROM credit_orders AS co LEFT JOIN view_purchased_credits AS v1 ON v1.client_id = co.client_id LEFT JOIN view_credits_used AS v2 ON v2.client_id = co.client_id WHERE co.payment_status = 'Paid';
Durch Eliminieren der Unterabfrage aus der FROM-Klausel und Verwendung von Zwischenansichten kann die Ansicht „view_credit_status“ erfolgreich erstellt werden, ohne den mit Unterabfragen in der FROM-Klausel verbundenen Fehler auszulösen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „View's SELECT enthält eine Unterabfrage in der FROM-Klausel' in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!