Maison >base de données >tutoriel mysql >Comment résoudre l'erreur « Le SELECT de la vue contient une sous-requête dans la clause FROM » dans MySQL ?
Erreur : le SELECT de la vue contient une sous-requête dans la clause FROM
Description du problème :
Vous essayez de créer une vue mais rencontrez l'erreur "L'instruction SELECT de la vue contient FROM sous-requête dans la clause". La requête que vous avez fournie est la suivante :
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)
Cause :
Selon la documentation MySQL, une instruction SELECT ne peut pas contenir de sous-requête dans la clause FROM.
Solution :
Votre solution consiste à créer une vue pour chaque sous-requête. Vous pouvez ensuite accéder à ces vues depuis la vue view_credit_status.
# 创建包含子查询的视图: create view sum_credit_usage as select client_id, sum(credits_used) as credits_used from credit_usage group by client_id; # 创建您的最终视图: create view view_credit_status as (select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased, ifnull(sum_credit_usage.credits_used, 0) as used from credit_orders left outer join sum_credit_usage on t1.client_id = credit_orders.client_id where credit_orders.payment_status='Paid' group by credit_orders.client_id);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!