집 >데이터 베이스 >MySQL 튜토리얼 >통합 시간 보고서를 위해 KnownHours와 UnknownHours 테이블을 어떻게 결합할 수 있습니까?
통합 출력을 위한 테이블 결합
소개:
여러 테이블을 처리할 때 다음이 필요합니다. 포괄적이고 의미 있는 결과를 제공하기 위해 이들을 병합합니다. 테이블 결합에는 조인, 합집합, 집계 등의 기술이 포함됩니다.
문제 설명:
당면 작업은 KnownHours와 UnknownHours라는 두 테이블을 단일 출력으로 결합하는 것입니다. 월을 무시하고 ChargeNum 및 CategoryID별로 시간을 그룹화합니다.
표 세부 정보:
Table | Column | Description |
---|---|---|
KnownHours | ChargeNum | Unique charge number |
KnownHours | CategoryID | Category associated with the charge |
KnownHours | Month | Month when the charge was incurred |
KnownHours | Hours | Known hours for the charge |
UnknownHours | ChargeNum | Unique charge number |
UnknownHours | Month | Month when the charge was incurred |
UnknownHours | Hours | Unknown hours for the charge |
원하는 출력:
예상 출력은 다음 구조의 단일 테이블입니다.
Table | Column | Description |
---|---|---|
Consolidated | ChargeNum | Unique charge number |
Consolidated | CategoryID | Category associated with the charge or 'Unknown' |
Consolidated | Hours | Total hours for the charge |
해결 방법:
원하는 결과를 얻으려면 SQL에서 UNION 연산을 활용하겠습니다. UNION은 여러 쿼리의 결과를 단일 테이블로 결합합니다. 이 경우 KnownHours 테이블에 대해 하나, UnknownHours 테이블에 대해 하나, 두 개의 쿼리를 실행합니다. 쿼리는 각 ChargeNum 및 CategoryID(UnknownHours의 경우 'Unknown')에 대한 시간을 집계합니다.
KnownHours 테이블에 대한 첫 번째 쿼리:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
UnknownHours 테이블에 대한 두 번째 쿼리 :
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
마지막으로 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 작업은 두 쿼리의 결과를 단일 테이블로 연결하여 원하는 출력을 제공합니다.
위 내용은 통합 시간 보고서를 위해 KnownHours와 UnknownHours 테이블을 어떻게 결합할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!