Home >Database >Mysql Tutorial >How to Resolve 'View's SELECT contains a subquery in the FROM clause' in MySQL?

How to Resolve 'View's SELECT contains a subquery in the FROM clause' in MySQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 05:32:36215browse

How to Resolve

Subquery in View's FROM Clause Troubleshooting

The error "View's SELECT contains a subquery in the FROM clause" occurs when a MySQL view's SELECT statement includes a subquery within the FROM clause. As per MySQL documentation, this is not allowed.

To address this issue in your query to create a view named view_credit_status, consider the following solution:

The problematic subquery is:

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

Create a separate view for this subquery:

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

In the view_credit_status view, reference the new view_credit_usage_summary view instead of the subquery:

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)

This approach separates the subquery into a dedicated view, allowing you to access its results without violating MySQL's restrictions.

The above is the detailed content of How to Resolve 'View's SELECT contains a subquery in the FROM clause' in MySQL?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn