테이블 및 쿼리 조인

적용 대상
Microsoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

Access 쿼리에 여러 데이터 원본을 포함하는 경우 조인을 사용하여 데이터 원본이 서로 어떻게 관련되어 있는지에 따라 보려는 레코드를 제한합니다. 또한 조인을 사용하여 두 데이터 원본의 레코드를 결합하면 원본의 각 레코드 쌍이 쿼리 결과에서 하나의 레코드가 됩니다.

이 문서에서는 다양한 유형의 조인에 대해 설명하고 쿼리에서 사용하는 방법을 보여 줍니다. 기본적으로 쿼리에 사용하는 두 데이터 원본 간에 이미 관계가 있는 경우 조인이 자동으로 만들어집니다. 또한 서로 명확하게 일치하는 필드가 있는 경우에도 조인이 만들어집니다. 자동으로 생성된 조인을 삭제할 수 있습니다. 이 문서에서는 테이블 관계를 만드는 방법을 포함하여 테이블 관계에 대한 기본 정보를 제공합니다.

참고

테이블을 조인하는 것과 동일한 방식으로 쿼리를 조인할 수 있으며 둘 다 조인할 수도 있습니다.

이 문서의 내용

개요

데이터베이스는 서로 논리적 관계를 지닌 데이터 테이블의 컬렉션입니다. 관계를 사용하여 공통된 필드를 사용하여 테이블을 연결합니다. 테이블은 여러 관계의 일부일 수 있지만 각 관계에는 항상 정확히 두 개의 테이블이 포함됩니다. 쿼리에서 관계는 조인으로 표시됩니다.

쿼리에 테이블을 추가하면 Access는 테이블 간에 정의된 관계를 기반으로 하는 조인을 만듭니다. 이미 정의된 관계를 나타내지 않더라도 쿼리에서 조인을 수동으로 만들 수 있습니다. 테이블 대신 또는 테이블 외에 다른 쿼리를 쿼리의 데이터 원본으로 사용하는 경우 원본 쿼리 간에 조인을 만들 수 있으며, 이러한 쿼리와 데이터 원본으로 사용하는 테이블 간에도 조인을 만들 수 있습니다.

조인은 쿼리 작업에 포함되기 위해 데이터가 일치해야 하는 규칙을 설정한다는 점에서 쿼리 조건과 유사하게 작동합니다. 조건과 달리 조인은 조인 조건을 만족하는 각 행 쌍이 레코드 집합에서 결합되어 단일 행을 형성하도록 지정합니다.

조인에는 내부 조인, 외부 조인, 교차 조인 및 같지 않은 조인의 네 가지 기본 유형이 있습니다. 이 문서에서는 사용할 수 있는 각 조인 유형, 각 유형을 사용하는 이유 및 조인을 만드는 방법을 살펴봅니다.

조인은 테이블에 대한 관계가 쿼리에 대한 것으로, 공통된 데이터 값을 기반으로 두 원본의 데이터를 결합하는 방법을 나타냅니다. 다음은 대화 상자에 조인의 속성이 열려 있는 쿼리 디자인 보기의 조인 그림입니다.

조인 속성 상자입니다.

테이블 사이의 이 줄은 조인을 나타냅니다. 조인을 두 번 클릭하여 조인 속성 대화 상자(그림)를 열고 조인을 검토하거나 변경합니다.

조인은 때때로 방향적입니다. 대화 상자의 이 영역에는 조인에서 어떤 테이블인지와 테이블 조인에 사용되는 필드가 표시됩니다.

이 영역은 조인 유형을 결정합니다. 옵션 1은 내부 조인, 2는 왼쪽 우선 외부 조인, 3은 오른쪽 우선 외부 조인입니다.

두 테이블의 필드를 모두 사용할 수 있으며, 각 테이블에서 주어진 작업과 관련된 데이터가 표시됩니다. 내부 조인에는 다른 데이터가 포함되지 않습니다. 외부 조인에서는 한 테이블의 관련 없는 레코드도 쿼리 결과에 포함됩니다.

맨 위로 이동

참가 유형

조인에는 내부 조인, 외부 조인, 교차 조인 및 같지 않은 조인의 네 가지 기본 유형이 있습니다. 교차 조인과 같지 않은 조인은 고급 조인 유형으로 거의 사용되지 않지만 조인이 작동하는 방식을 완전히 이해하려면 이에 대해 알고 있어야 합니다.

내부 조인은 관련 테이블에 대응하는 데이터가 있는 경우 Access에서 테이블의 데이터만 포함하며 그 반대의 경우도 마찬가지입니다. 대부분의 경우 내부 조인을 사용합니다. 조인을 만들고 조인 종류를 지정하지 않으면 Access에서는 사용자가 내부 조인을 원한다고 가정합니다. 내부 조인은 공유 값을 기반으로 두 원본의 데이터를 결합할 수 있으므로 전체 그림이 있는 경우에만 데이터를 볼 수 있기 때문에 유용합니다.

외부 조인은 내부 조인과 유사하지만 테이블 중 하나에서 나머지 행을 추가합니다. 외부 조인은 방향적입니다. 왼쪽 외부 조인에는 조인의 첫 번째 테이블인 왼쪽 테이블의 모든 레코드가 포함되고, 오른쪽 외부 조인에는 조인의 두 번째 테이블인 오른쪽 테이블의 모든 레코드가 포함됩니다.

완전 외부 조인: 모든 데이터, 가능한 경우 결합

일부 시스템에서는 외부 조인이 두 테이블의 모든 행을 포함할 수 있으며 해당 행은 결합될 수 있습니다. 이를 완전 외부 조인이라고 하며 Access에서는 이를 명시적으로 지원하지 않습니다. 그러나 교차 조인 및 조건을 사용하여 동일한 효과를 얻을 수 있습니다.

교차 조인: 모든 데이터를 가능한 모든 방법으로 결합

대부분의 경우 교차 조인은 쿼리에 두 개의 테이블을 추가한 다음 조인하는 것을 잊어버린 부작용입니다. Access에서는 한 테이블의 모든 레코드를 다른 테이블의 모든 레코드, 즉 가능한 모든 레코드 조합과 결합하여 확인하려는 것으로 해석됩니다. 결합할 데이터가 없으므로 이러한 종류의 조인은 유용한 결과를 거의 생성하지 않습니다. 그러나 교차 조인이 딱 필요한 경우가 있습니다.

같지 않은 조인: 일반 조인과 비슷하지만 다른 비교를 사용하여 행을 결합합니다.

같지 않은 조인은 등호(=) 이외의 연산자를 사용하여 값을 비교하고 데이터 결합 여부와 방법을 결정합니다. 같지 않은 조인은 명시적으로 지원되지 않지만 교차 조인과 조건을 사용하여 동일한 효과를 얻을 수 있습니다.

조인된 테이블에 공통된 값이 모두 있는 행 표시

조인된 필드에서 일치하는 값이 있는 행만 표시하려면 내부 조인을 사용합니다. 내부 조인이 자동으로 만들어집니다.

내부 조인은 가장 일반적인 조인 유형입니다. 조인된 필드의 데이터를 기반으로 조인된 테이블 중 하나의 행이 다른 테이블의 행에 해당한다고 쿼리에 알려줍니다. 내부 조인이 있는 쿼리를 실행하면 조인된 테이블 모두에 공통 값이 있는 행만 쿼리 작업에 포함됩니다.

내부 조인을 어떻게 할까요?

대부분의 경우 내부 조인을 사용하기 위해 아무 작업도 수행할 필요가 없습니다. 쿼리에 추가하는 테이블에 이미 관계가 있는 경우 Access는 테이블을 추가할 때 관련 테이블의 각 쌍 사이에 내부 조인을 자동으로 만듭니다. 참조 무결성이 적용되는 경우 Access에서는 조인줄 위에 "1"을 표시하여 일대다 관계에서 "일" 쪽에 있는 테이블을 표시하고, 무한대 기호()를 표시하여 "다" 쪽에 있는 테이블을 표시합니다.

관계를 만들지 않은 경우에도 쿼리에 두 개의 테이블을 추가하고 각 테이블에 동일하거나 호환되는 데이터 형식의 필드가 있고 조인 필드 중 하나가 기본 키인 경우 Access에서 내부 조인을 자동으로 만듭니다. 이 경우 참조 무결성이 적용되지 않으므로 "하나" 및 "다" 기호가 표시되지 않습니다.

쿼리에 쿼리를 추가하고 해당 쿼리 간에 관계를 만들지 않은 경우 Access는 해당 쿼리 간에 또는 쿼리와 테이블 간에 내부 조인을 자동으로 만들지 않습니다. 일반적으로 직접 만들어야 합니다. 한 데이터 원본에서 다른 데이터 원본의 필드로 필드를 끌어 내부 조인을 만듭니다. 두 필드 사이에 선이 표시되면 조인이 만들어진 것입니다.

내부 조인에 대한 SQL 구문

내부 조인은 아래와 같이 SQL의 FROM 절에 지정됩니다.

FROM table1 INNER JOIN table2 ON table1. 필드1 비교 테이블2. field2

INNER JOIN 연산은 다음과 같이 구성됩니다.

구성 요소 설명
table1, table2 레코드를 결합할 테이블의 이름입니다.
field1, field2 조인되는 필드의 이름입니다. 숫자가 아닌 경우 필드는 데이터 형식이 같고 데이터 종류가 같아야 하지만 이름이 같을 필요는 없습니다.
비교 임의의 관계형 비교 연산자: "=",<> ", "<=", ">=" 또는 "<>."

내부 조인 구문에 대한 자세한 내용은 INNER JOIN 작업 항목을 참조하십시오.

맨 위로 이동

한 테이블의 모든 행과 다른 테이블의 해당 행 표시

외부 조인은 조인 양쪽의 행 중 일부가 정확히 일치하지만 쿼리에 한 테이블의 모든 행과 조인 양쪽에서 공통 값을 공유하는 다른 테이블의 행도 포함해야 함을 쿼리에 지시합니다.

외부 조인은 왼쪽 외부 조인이거나 바로 외부 조인일 수 있습니다. 왼쪽 우선 외부 조인의 경우 쿼리에는 SQL 문 FROM 절에 있는 첫 번째 테이블의 모든 행과 조인 필드에 두 테이블에 공통되는 값이 포함된 다른 테이블의 행만 포함됩니다. 오른쪽 우선 외부 조인의 경우 쿼리에는 SQL 문 FROM 절의 두 번째 테이블에 있는 모든 행과 조인 필드에 두 테이블에 공통되는 값이 포함된 다른 테이블의 행만 포함됩니다.

참고

조인을 두 번 클릭한 다음 조인 속성 대화 상자를 확인하여 지정된 조인에서 왼쪽 테이블인지 오른쪽 테이블인지를 쉽게 알 수 있습니다. SQL 보기로 전환한 다음 FROM 절을 검사할 수도 있습니다.

외부 조인의 한쪽에 있는 일부 행에는 다른 테이블의 해당 행이 없으므로 다른 테이블의 쿼리 결과에 반환되는 일부 필드는 행이 일치하지 않는 경우 비어 있게 됩니다.

외부 조인을 어떻게 할까요?

기존 내부 조인을 수정하여 외부 조인을 만듭니다. 내부 조인이 없으면 조인을 만든 다음 외부 조인으로 변경합니다.

내부 조인을 외부 조인으로 변경

  1. 쿼리 디자인 보기에서 변경할 조인을 두 번 클릭합니다.
    조인 속성 대화 상자가 나타납니다.
  2. 조인 속성 대화 상자에서 옵션 2와 옵션 3 옆에 나열된 선택 항목을 확인합니다.
  3. 사용할 옵션을 클릭한 다음 확인을 클릭합니다.
  4. Access에 조인이 표시되고, 모든 행이 포함되는 데이터 원본에서 조인 조건을 충족하는 행만 포함될 데이터 원본을 가리키는 화살표가 표시됩니다.

모호한 외부 조인

LEFT JOIN 및 INNER JOIN을 포함하는 쿼리를 만드는 경우 Access에서 먼저 수행할 조인 작업을 결정하지 못할 수 있습니다. 왼쪽 조인을 먼저 수행할지 내부 조인을 먼저 수행하는지에 따라 결과가 달라지므로 Access에 오류 메시지가 표시됩니다.

이 오류를 해결하려면 먼저 수행할 조인을 명확히 알 수 있도록 쿼리를 수정해야 합니다.

외부 조인에 대한 SQL 구문

외부 조인은 아래와 같이 SQL의 FROM 절에 지정됩니다.

FROM table1 [ 왼쪽 | 오른쪽 ] 테이블2 조인
ON table1.field1 compare table2.field2

LEFT JOIN 및 RIGHT JOIN 연산은 다음과 같이 구성됩니다.

구성 요소 설명
table1, table2 레코드를 결합할 테이블의 이름입니다.
field1, field2 조인되는 필드의 이름입니다. 필드는 데이터 형식이 같고 데이터 종류가 같아야 하지만 이름이 같을 필요는 없습니다.
비교 임의의 관계형 비교 연산자: "=",<> ", "<=", ">=" 또는 "<>."

외부 조인 구문에 대한 자세한 내용은 LEFT JOIN, RIGHT JOIN 작업 항목을 참조하십시오.

맨 위로 이동

두 테이블의 모든 행을 표시하고 공통된 값이 있는 경우 결합합니다

두 테이블의 모든 행을 표시하고 공통 값을 기준으로 조인하려면 완전 외부 조인을 사용합니다. Access에서는 전체 외부 조인을 명시적으로 지원하지 않지만 통합 쿼리를 사용하여 동일한 효과를 얻을 수 있습니다. 다음 절차에서는 이 작업을 수행하는 방법을 설명하지만 통합 쿼리에 대한 자세한 내용은 참고 항목 섹션을 참조하세요.

통합 쿼리를 사용하여 완전 외부 조인을 수행하려면:

  1. 완전 외부 조인에 사용할 필드에 왼쪽 우선 외부 조인이 있는 쿼리를 만듭니다.

  2. 탭의 보기 그룹에서 보기를 클릭한 다음 SQL 보기를 클릭합니다.

  3. CTRL+C를 눌러 SQL 코드를 복사합니다.

  4. FROM 절 끝에 있는 세미콜론을 삭제한 다음 Enter 키를 누릅니다.

  5. UNION을 입력하고 Enter 키를 누릅니다.

    참고

    통합 쿼리를 사용하여 전체 외부 조인을 수행할 때는 ALL 키워드(keyword)를 사용하지 마세요.

  6. Ctrl+V를 눌러 3단계에서 복사한 SQL 코드를 붙여넣습니다.

  7. 붙여넣은 코드에서 LEFT JOINRIGHT JOIN으로 변경합니다.

  8. 두 번째 FROM 절의 끝에 있는 세미콜론을 삭제하고 Enter 키를 누릅니다.

  9. FROM 절(왼쪽 테이블)에 나열된 첫 번째 테이블에서 조인 필드의 값이 NULL이 되도록 지정하는 WHERE 절을 추가합니다.
    예를 들어 FROM 절이 다음과 같은 경우입니다.

    FROM Products RIGHT JOIN [Order Details] 
     ON Products.ID = [Order Details].[Product ID]
    
    

    다음 WHERE 절을 추가합니다.
    WHERE Products.ID IS NULL

  10. WHERE 절의 끝에 세미콜론(;)을 입력하여 통합 쿼리의 끝을 나타냅니다.

  11. 디자인 탭의 결과 그룹에서 실행을 클릭합니다.

교차 조인

교차 조인은 Access에 명시적으로 표시되지 않는다는 점에서 내부 및 외부 조인과 다릅니다. 교차 조인에서는 한 테이블의 각 행이 다른 테이블의 각 행과 결합되어 교차 제품 또는 데카티안 제품이라고 합니다. 명시적으로 조인되지 않은 테이블이 있는 쿼리를 실행할 때마다 교차 제품이 결과입니다. 교차 조인은 일반적으로 의도하지 않은 것이지만 유용한 경우가 있습니다.

왜 교차 조인을 사용하나요?

두 테이블이나 쿼리 간에 가능한 모든 행 조합을 검사하려면 교차 조인을 사용합니다. 예를 들어, 귀하의 비즈니스가 눈부신 한 해를 보냈고 고객에게 리베이트를 제공하는 것을 고려하고 있다고 가정해 보겠습니다. 각 고객의 구매를 합산하는 쿼리를 작성하고, 여러 가능한 리베이트 비율이 있는 작은 테이블을 만든 다음, 교차 조인을 수행하는 다른 쿼리에서 두 테이블을 결합할 수 있습니다. 결국 각 고객에 대한 가상 리베이트 집합을 표시하는 쿼리가 생성됩니다.

교차 조인을 어떻게 할까요?

교차 조인은 쿼리에 테이블 또는 쿼리를 포함하고 각 테이블 또는 쿼리에 대해 명시적 조인을 하나 이상 만들지 않을 때마다 생성됩니다. Access는 다른 테이블 또는 쿼리에 명시적으로 조인되지 않은 각 테이블 또는 쿼리의 모든 행을 결과의 다른 모든 행에 결합합니다. 이전 단락의 리베이트 시나리오를 고려하세요. 91명의 고객이 있고 5개의 가능한 리베이트 비율을 확인하려고 한다고 가정합니다. 교차 조인은 455개의 행(91과 5의 곱)을 생성합니다.

상상할 수 있듯이 의도하지 않은 교차 조인은 쿼리 결과에 엄청난 수의 행을 만들 수 있습니다. 또한 이러한 결과는 일반적으로 의미가 없습니다. 실제로 모든 행을 다른 행과 결합하지 않으려는 경우 결과에 표시되는 대부분의 결합된 행이 의미가 없기 때문입니다. 마지막으로, 의도하지 않은 교차 조인을 사용하는 쿼리는 실행하는 데 시간이 매우 오래 걸릴 수 있습니다.

쿼리 디자인 보기에서 의도하지 않은 교차 조인 1. 동그라미로 표시된 필드는 서로 조인되어야 합니다.

의도하지 않은 교차 제품 1. 레코드 수가 매우 많다는 점에 유의하세요.

수정된 쿼리 결과 1. 레코드 수는 훨씬 적습니다.

맨 위로 이동

필드 값의 불동등성을 기반으로 테이블 조인

조인은 조인된 필드의 동등성을 기반으로 할 필요가 없습니다. 조인은 보다 큼(),> 보다 작음(<) 또는 같지 않음()<>과 같은 비교 연산자를 기반으로 할 수 있습니다. 동등성을 기반으로 하지 않는 조인을 같지 않은 조인이라고 합니다.

같지 않은 필드 값을 기반으로 두 데이터 원본의 행을 결합하려면 같지 않은 조인을 사용합니다. 일반적으로 같지 않은 조인은 보다 큼(>), 보다 작거나 같음(<), 크거나 같음>(=) 또는 작거나 같음(<=) 비교 연산자를 기반으로 합니다. 같지 않음<>() 연산자를 기반으로 하는 같지 않은 조인은 교차 조인과 거의 같은 수의 행을 반환할 수 있으며 결과를 해석하기 어려울 수 있습니다.

불규칙 조인을 어떻게 할까요?

같지 않은 조인은 디자인 보기에서 지원되지 않습니다. 이를 사용하려면 SQL 보기를 사용해야 합니다. 그러나 디자인 보기에서 조인을 만들고 SQL 보기로 전환한 다음 등호(=) 비교 연산자를 찾아 사용하려는 연산자로 변경할 수 있습니다. 이 작업을 완료한 후 먼저 SQL 보기에서 비교 연산자를 다시 같음(=)으로 변경하는 경우에만 디자인 보기에서 쿼리를 다시 열 수 있습니다.

참가 삭제

원하지 않는 조인이 자동으로 만들어지거나 실수로 조인을 만든 경우(예: 데이터 형식이 다른 두 필드 간의 조인) 조인을 삭제할 수 있습니다.

  1. 쿼리 디자인 눈금에서 제거할 조인을 클릭합니다.
  2. Delete 키를 누릅니다.

-또는-

  • 쿼리 디자인 눈금에서 제거할 조인을 마우스 오른쪽 단추로 클릭한 다음 삭제를 클릭합니다.

맨 위로 이동

추가 쿼리를 사용하여 테이블에 레코드 추가통합 쿼리를 사용하여 여러 선택 쿼리의 결과 결합여러 테이블을 기반으로 쿼리 만들기관계 만들기, 편집 또는 삭제