비즈니스 시나리오에 대한 간략한 설명은 이해를 돕기 위해 비즈니스 요구 사항을 단순화했습니다.
이제 누구나 유통사가 되어 공유 활동을 할 수 있습니다. 누군가가 공유 활동 링크를 통해 구매하면 유통 업체는 수익 정보를 갖게 됩니다. 물론 공유하지 않고도 유통 활동 제품을 직접 구매할 수도 있습니다. 하지만 유통수익은 없을 것입니다. 테이블 구조상 모든 주문은 주문 테이블 order
에 저장됩니다. 유통 관계가 있는 경우에는 유통 바인딩 정보(유통업체 및 유통업체)가 기록
에 기록됩니다. >테이블에서 배포 없이 직접 구매한 음반은 레코드
테이블에 추가되지 않습니다. 이제 날짜를 2022.11.08로 가정하여 해당 날짜의 총 주문 건수와 유통 기록을 계산해야 합니다. order
中,对于存在分销关系的会将分销绑定信息(分销人与被分销人)记录到record
表中,不通过分销直接购买的不会在record
表中添加记录。现在要求统计一下当天的订单总数与分销记录总数,假设当天为2022.11.08。
如果是单独统计计算很简单,直接统计总数就可以:
统计当天的总订单数:
SELECT COUNT(1) total_couut FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08'
统计当天的分销总的分销记录数:
SELECT COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
但是如何将两个不同的统计信息封装到一个结果集中,这里提供一种处理方案,使用union all
SELECT COUNT(1) total_couut,0 record_count FROM order WHERE DATE_FORMAT(order_create_time,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08'
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,'%Y-%m-%d') = '2022-11-08' union all SELECT 0 total_count,COUNT(1) record _count FROM record WHEREDATE_FORMAT(create_time,'%Y-%m-%d') = '2022-11-08') t
union all
을 사용하여 병렬 쿼리를 수행한 다음 합계 쿼리를 수행합니다. 구체적인 구현 방법은 다음과 같습니다. 1. Union all을 사용하여 병렬 쿼리 수행
쿼리 결과는 다음과 같습니다.
2. 총 주문 수와 총 유통 기록이 쿼리되었습니다. , 다음에 처리해야 할 것은 이를 결과 세트로 캡슐화하는 방법입니다. 해당 필드 값이 모두 0이기 때문에 처리 방법도 매우 간단합니다. 구체적인 구현은 다음과 같습니다.
rrreee🎜쿼리 결과는 다음과 같습니다. 🎜🎜🎜🎜위 내용은 mysql에서 하나의 SQL을 사용하여 결과 세트에 연결할 수 없는 여러 SQL을 캡슐화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!