Heim >Datenbank >MySQL-Tutorial >Wie löse ich in MySQL „Views SELECT enthält eine Unterabfrage in der FROM-Klausel'?

Wie löse ich in MySQL „Views SELECT enthält eine Unterabfrage in der FROM-Klausel'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 05:32:36245Durchsuche

How to Resolve

Fehlerbehebung bei Unterabfragen in der FROM-Klausel von View

Der Fehler „SELECT von View enthält eine Unterabfrage in der FROM-Klausel“ tritt auf, wenn die SELECT-Anweisung einer MySQL-Ansicht ausgeführt wird Enthält eine Unterabfrage innerhalb der FROM-Klausel. Gemäß der MySQL-Dokumentation ist dies nicht zulässig.

Um dieses Problem in Ihrer Abfrage zum Erstellen einer Ansicht mit dem Namen view_credit_status zu beheben, ziehen Sie die folgende Lösung in Betracht:

Die problematische Unterabfrage lautet:

(select credit_usage.client_id, 
        sum(credits_used) as credits_used 
 from credit_usage 
 group by credit_usage.client_id) as t0

Erstellen Sie eine separate Ansicht für diese Unterabfrage:

create view view_credit_usage_summary as 
select credit_usage.client_id, 
       sum(credits_used) as credits_used 
from credit_usage 
group by credit_usage.client_id

Referenz in der Ansicht view_credit_status die neue view_credit_usage_summary-Ansicht anstelle der Unterabfrage:

create view view_credit_status as 
(select credit_orders.client_id, 
        sum(credit_orders.number_of_credits) as purchased, 
        ifnull(view_credit_usage_summary.credits_used,0) as used 
 from credit_orders
 left outer join view_credit_usage_summary on view_credit_usage_summary.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 dedizierte Ansicht, sodass Sie auf ihre Ergebnisse zugreifen können, ohne die Einschränkungen von MySQL zu verletzen.

Das obige ist der detaillierte Inhalt vonWie löse ich in MySQL „Views SELECT enthält eine Unterabfrage in der FROM-Klausel'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn