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
730 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!

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