View's SELECT contains a subquery in the FROM clause View's SELECT contains a subquery in the FROM clause database database

View's SELECT contains a subquery in the FROM clause


As per documentation:

MySQL Docs

  • The SELECT statement cannot contain a subquery in the FROM clause.

Your workaround would be to create a view for each of your subqueries.

Then access those views from within your view view_credit_status


create view view_clients_credit_usage as    select client_id, sum(credits_used) as credits_used     from credit_usage     group by client_idcreate 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 view_clients_credit_usage as t1 on t1.client_id = credit_orders.client_id    where credit_orders.payment_status='Paid'    group by credit_orders.client_id)


As the more recent MySQL documentation on view restrictions says:

Before MySQL 5.7.7, subqueries cannot be used in the FROM clause of a view.

This means, that choosing a MySQL v5.7.7 or newer or upgrading the existing MySQL instance to such a version, would remove this restriction on views completely.

However, if you have a current production MySQL version that is earlier than v5.7.7, then the removal of this restriction on views should only be one of the criteria being assessed while making a decision as to upgrade or not. Using the workaround techniques described in the other answers may be a more viable solution - at least on the shorter run.