Maison  >  Article  >  base de données  >  Comment utiliser un SQL dans MySQL pour encapsuler plusieurs SQL qui ne peuvent pas être associés dans un jeu de résultats

Comment utiliser un SQL dans MySQL pour encapsuler plusieurs SQL qui ne peuvent pas être associés dans un jeu de résultats

王林
王林avant
2023-05-27 10:24:47655parcourir

Processus de gestion des problèmes

Une brève explication du scénario commercial Pour faciliter la compréhension, les exigences commerciales ont été simplifiées.

Il existe désormais une activité de distribution. Tout le monde peut devenir distributeur pour partager l'activité. Une fois que quelqu'un achète via le lien d'activité partagée, le distributeur aura des informations sur les bénéfices. Bien entendu, les produits de l'activité de distribution peuvent également être achetés directement sans partager l'activité. lien. Mais il n’y aura pas de revenus de distribution. En termes de structure de table, toutes les commandes sont stockées dans la table de commande order Pour celles ayant des relations de distribution, les informations de liaison de distribution (distributeur et personne distribuée) seront enregistrées dans recordDans le tableau, les disques achetés directement sans distribution ne seront pas ajoutés au tableau <code>disque. Nous devons désormais compter le nombre total de commandes et d’enregistrements de distribution ce jour-là, en supposant que ce jour soit le 2022.11.08. order中,对于存在分销关系的会将分销绑定信息(分销人与被分销人)记录到record表中,不通过分销直接购买的不会在record表中添加记录。现在要求统计一下当天的订单总数与分销记录总数,假设当天为2022.11.08。

如果是单独统计计算很简单,直接统计总数就可以:

统计当天的总订单数:

SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;

统计当天的分销总的分销记录数:

SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;

但是如何将两个不同的统计信息封装到一个结果集中,这里提供一种处理方案,使用union all

S'il s'agit d'un calcul statistique à part, c'est très simple, il suffit de compter directement le nombre total :

Statistiques du nombre total de commandes du jour :

SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;
union all 
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;

Statistiques de la distribution du jour Nombre total d'enregistrements de distribution :

select sum(t.total_count) total_count, sum(t.record_count) record_count from
(SELECT COUNT(1)  total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;
union all 
SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,&#39;%Y-%m-%d&#39;) = &#39;2022-11-08&#39;) t

Mais comment combiner deux informations statistiques différentes Encapsulées dans un ensemble de résultats, voici une solution de traitement, utilisez union all pour effectuer une requête parallèle, puis effectuez une requête de sommation. La méthode de mise en œuvre spécifique est la suivante.

Comment utiliser un SQL dans MySQL pour encapsuler plusieurs SQL qui ne peuvent pas être associés dans un jeu de résultats1. Utilisez union all pour les requêtes parallèles

Afin de garantir la cohérence des informations sur les paramètres interrogés, le nombre total d'enregistrements de distribution est complété lors de l'interrogation du nombre total de commandes, et le nombre total de commandes est complété lors de l'interrogation. le nombre total d'enregistrements de distribution. La mise en œuvre spécifique est la suivante :

rrreee

Les résultats de la requête sont les suivants :

Comment utiliser un SQL dans MySQL pour encapsuler plusieurs SQL qui ne peuvent pas être associés dans un jeu de résultats2. Traitement de la somme

🎜Maintenant que le nombre total de commandes et les enregistrements de distribution totaux ont été interrogés, ce qui doit être traité ensuite, c'est comment les encapsuler dans un ensemble de résultats. La méthode de traitement est également très simple, qui consiste à additionner directement parce que les valeurs des champs correspondants sont toutes 0,. L'implémentation spécifique est la suivante : 🎜rrreee🎜Les résultats de la requête sont les suivants : 🎜🎜🎜🎜

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer