"Le SELECT de la vue contient une sous-requête dans la clause FROM" : résolution du problème
Lorsque vous essayez de créer une vue basée sur deux tables, credit_orders et credit_usage, la requête renvoie une erreur indiquant "View's SELECT contient une sous-requête dans la clause FROM." Cette erreur se produit car la documentation MySQL interdit explicitement la présence de sous-requêtes dans la clause FROM d'une instruction view SELECT.
Pour résoudre ce problème et réussir à créer la vue, il est nécessaire de créer des vues distinctes pour chaque sous-requête. Il s'agit de créer des vues intermédiaires à la fois pour le calcul des crédits achetés et pour le calcul des crédits utilisés.
Pour le calcul des crédits achetés, la requête suivante peut être utilisée :
CREATE VIEW view_purchased_credits AS SELECT client_id, SUM(number_of_credits) AS purchased FROM credit_orders GROUP BY client_id;
Pour le calcul des crédits utilisés , la requête suivante peut être utilisée :
CREATE VIEW view_credits_used AS SELECT client_id, SUM(credits_used) AS used FROM credit_usage GROUP BY client_id;
Une fois ces vues intermédiaires créées, il est possible de créer la vue view_credit_status en accéder aux vues intermédiaires :
CREATE VIEW view_credit_status AS SELECT co.client_id, v1.purchased, v2.used FROM credit_orders AS co LEFT JOIN view_purchased_credits AS v1 ON v1.client_id = co.client_id LEFT JOIN view_credits_used AS v2 ON v2.client_id = co.client_id WHERE co.payment_status = 'Paid';
En éliminant la sous-requête de la clause FROM et en utilisant des vues intermédiaires, la vue view_credit_status peut être créée avec succès sans déclencher l'erreur associée aux sous-requêtes dans la clause FROM.
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!