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 ?

Mary-Kate Olsen
Libérer: 2024-12-25 22:13:13
original
685 Les gens l'ont consulté

How to Resolve the

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

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

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

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!

source:php.cn
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