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 ?

Comment résoudre l'erreur « Le SELECT de la vue contient une sous-requête dans la clause FROM » dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 05:58:39240parcourir

How to Resolve

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn