Views SELECT enthält eine Unterabfrage in der FROM-Klausel
Ich habe zwei Tabellen und ich brauche zum erstellen einer Ansicht. Die Tabellen sind:
credit_orders(id, client_id, number_of_credits, payment_status)
credit_usage(id, client_id, credits_used, date)
Verwende ich folgende Abfrage, um dies zu tun. Die Abfrage ohne "create view" - Teil arbeitet gut, aber mit "create view", es zeigt den Fehler "- Ansicht AUSWÄHLEN, enthält eine Unterabfrage in der FROM-Klausel". Was könnte das Problem sein & mögliche Lösung:
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)
InformationsquelleAutor der Frage Raouf Athar | 2011-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als pro-Dokumentation:
Die MySQL-Docs
Ihre Abhilfe wäre, eine Ansicht zu erstellen, für jedes Ihrer Unterabfragen.
Dann Zugriff auf diese views aus Ihrer Sicht
view_credit_status
InformationsquelleAutor der Antwort Nonym
InformationsquelleAutor der Antwort Michał Powaga
Als die neueren MySQL-Dokumentation auf view Einschränkungen sagt:
Dies bedeutet, dass die Auswahl einer MySQL v5.7.7 oder neuer bzw. dem ausbau der bestehenden MySQL-Instanz auf eine solche version, entfernen würde, diese Beschränkung auf Ansichten komplett.
Jedoch, wenn Sie eine aktuelle Produktion, MySQL-version, die älter als v5.7.7, dann ist die Entfernung dieser Beschränkung der Aussicht, sollte nur eines der Kriterien, die bewertet wird, während der Entscheidung über ein upgrade oder nicht. Problemumgehung zu verwenden Techniken, beschrieben in den anderen Antworten kann eine tragfähige Lösung - zumindest auf den kürzeren Lauf.
InformationsquelleAutor der Antwort Shadow
Sieht für mich wie MySQL 3.6 gibt den folgenden Fehler beim MySQL-3.7 nicht mehr Fehler aus. Ich bin noch etwas zu finden, in der Dokumentation in Bezug auf dieses Update.
InformationsquelleAutor der Antwort user3809638