> 데이터 베이스 > MySQL 튜토리얼 > 여러 테이블을 결합할 때 SQL 합계 계산이 잘못된 이유는 무엇이며 하위 쿼리를 사용하여 이를 수정하려면 어떻게 해야 합니까?

여러 테이블을 결합할 때 SQL 합계 계산이 잘못된 이유는 무엇이며 하위 쿼리를 사용하여 이를 수정하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-28 19:18:11
원래의
564명이 탐색했습니다.

Why are my SQL sum calculations incorrect when combining multiple tables, and how can I fix them using subqueries?

합계를 위해 여러 테이블의 데이터 결합: 잘못된 결과 처리

SQL 쿼리에서 세 개의 열로 구성된 테이블을 검색하려고 합니다. : "PROJECT", "SUM_AP" 및 "SUM_INV" 그러나 집계 프로세스의 그룹화로 인해 잘못된 결과가 발생했습니다.

잘못된 결과의 원인:

쿼리의 "GROUP BY" 절은 다음을 기준으로 값을 결합합니다. "AP.[PROJECT]" 열에 있습니다. 이 집계 프로세스는 본질적으로 중복된 "값" 항목을 합산하여 결과가 부풀려지게 됩니다.

해결책: 하위 선택 쿼리 사용

이 문제를 해결하기 위해 다음을 수정할 수 있습니다. 하위 선택을 사용한 쿼리 쿼리:

SELECT 
    AP1.[PROJECT],
    (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP,
    (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV
FROM 
    AP AS AP1 
    INNER JOIN INV AS INV1 
        ON (AP1.[PROJECT] =INV1.[PROJECT])
WHERE 
    AP1.[PROJECT] = 'XXXXX'
GROUP BY 
    AP1.[PROJECT]
로그인 후 복사

설명:

  • SUM() 함수 내의 하위 쿼리는 "AP"의 "값" 항목 합계를 계산합니다. " 및 "INV" 테이블을 각각 고유한 "PROJECT" 값에 대해 연결합니다.
  • 그런 다음 기본 쿼리는 이러한 테이블을 조인합니다. 일치하는 "PROJECT" 값을 기반으로 하위 쿼리를 수행하고 결과를 다시 한 번 집계하여 최종 테이블을 생성합니다.

이 수정된 쿼리는 고유한 "PROJECT" 값만 그룹화되고 합계가 올바르게 계산되어 의도한 결과를 제공합니다.

위 내용은 여러 테이블을 결합할 때 SQL 합계 계산이 잘못된 이유는 무엇이며 하위 쿼리를 사용하여 이를 수정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿