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
Libérer: 2025-01-04 05:58:39
original
320 Les gens l'ont consulté

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)
Copier après la connexion

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);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal