Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „View's SELECT enthält eine Unterabfrage in der FROM-Klausel'?
Fehlerbehebung „SELECT der Ansicht enthält eine Unterabfrage in der FROM-Klausel“
Beim Erstellen einer Ansicht mithilfe einer Abfrage, die Unterabfragen in der FROM-Klausel enthält In MySQL wird möglicherweise eine Fehlermeldung angezeigt, die besagt: „Views SELECT enthält eine Unterabfrage in der FROM-Klausel.“ Dieser Fehler weist darauf hin, dass MySQL keine Unterabfragen in der FROM-Klausel von Ansichtsdefinitionen zulässt.
Fehlerdetails
Betrachten Sie das folgende Beispiel:
create view view_credit_status as ( select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased, ifnull(t1.credits_used,0) as used from credit_orders left outer join ( select * from ( select credit_usage.client_id, sum(credits_used) as credits_used from credit_usage group by credit_usage.client_id ) as t0 ) as t1 on t1.client_id = credit_orders.client_id where credit_orders.payment_status='Paid' group by credit_orders.client_id );
Diese Abfrage versucht, eine Ansicht mit dem Namen view_credit_status zu erstellen, die Unterabfragen in der FROM-Klausel enthält. MySQL löst jedoch den Fehler „SELECT der Ansicht enthält eine Unterabfrage in der FROM-Klausel“ aus.
Lösung
Um dieses Problem zu beheben, besteht die Problemumgehung darin, separate Ansichten zu erstellen für die Unterabfragen und verweisen Sie auf diese Ansichten aus der Primäransicht. So geht das:
create view temp_view_used_credits as select credit_usage.client_id, sum(credits_used) as credits_used from credit_usage group by credit_usage.client_id;
create view view_credit_status as ( select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased, ifnull(temp_view_used_credits.credits_used,0) as used from credit_orders left outer join temp_view_used_credits on temp_view_used_credits.client_id = credit_orders.client_id where credit_orders.payment_status='Paid' group by credit_orders.client_id );
Dieser Ansatz trennt die Unterabfrage in eine separate Ansicht, sodass MySQL sie in der Primäransicht referenzieren kann, ohne die Einschränkung zu verletzen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „View's SELECT enthält eine Unterabfrage in der FROM-Klausel'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!