>데이터 베이스 >MySQL 튜토리얼 >구조는 비슷하지만 범주가 다른 두 테이블을 단일 출력 테이블로 결합하려면 어떻게 해야 합니까?

구조는 비슷하지만 범주가 다른 두 테이블을 단일 출력 테이블로 결합하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-22 21:31:17948검색

How Can I Combine Two Tables with Similar Structures but Different Categories into a Single Output Table?

단일 출력을 위해 두 테이블 결합

데이터베이스 작업을 수행하려면 여러 소스의 데이터를 결합된 출력으로 병합해야 하는 경우가 많습니다. 일반적인 과제는 유사한 구조이지만 카테고리가 다른 테이블을 결합하는 것입니다. 다음 문제를 생각해 보십시오.

ChargeNum(고유 식별자), CategoryID(범주 할당), Month(날짜) 및 Hours( 실제 값). 작업은 월 열을 무시하고 이러한 테이블을 단일 데이터 테이블로 결합하고 시간을 ChargeNum 및 CategoryID별로 그룹화하는 것입니다.

예상 출력은 다음과 같습니다.

ChargeNum    CategoryID     Hours
111111       1              90
111111       2              50
111111       Unknown        110.5
222222       1              40
222222       Unknown        25.5

이를 달성하려면 , 두 쿼리의 결과를 결합하는 UNION 연산자를 활용할 수 있습니다. 이 문제에 대해 두 개의 쿼리를 구성합니다.

쿼리 1:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID

이 쿼리는 각각에 대한 ChargeNum, CategoryID 및 Hours 합계를 검색합니다. "KnownHours" 테이블의 조합.

쿼리 2:

SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

이 쿼리는 "UnknownHours" 테이블의 각 항목에 대해 ChargeNum과 Hours의 합계를 검색하고 'Unknown'을 CategoryID로 할당합니다.

두 항목을 결합합니다. UNION ALL을 사용하는 쿼리는 원하는 출력을 생성합니다.

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID
UNION ALL
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

UNION ALL 연산자는 병합합니다. 중복을 제거하지 않고 결과를 확인하여 결합된 데이터를 전체적으로 볼 수 있습니다.

위 내용은 구조는 비슷하지만 범주가 다른 두 테이블을 단일 출력 테이블로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.