SQL Server 서로 다른 DB 테이블 조인 방법

테이블이 서로 다른 데이터베이스에 있더라도 동일한 컬럼을 기준으로 테이블을 조인해서 조회할 수 있습니다.

JOIN

SQL 서버에서 서로 다른 두 데이터베이스의 테이블을 조인할 때 아래의 구문을 주로 사용합니다.

SELECT 
tb_1.*, 
tb_2.* 
FROM [database_1].[table_schema].[table_name_1] tb_1 
JOIN [database_2].[table_schema].[table_name_2] tb_2 ON tb_1.id = tb_2.id

tb_1tb_2는 별칭입니다. 보기 편하게 줄이기 위해 사용하는 겁니다. 테이블 안에서도 특정 컬럼을 지칭할 때 테이블명.컬럼명처럼 사용하듯이 테이블의 상위 개념인 데이터베이스 역시 동일하게 .을 사용합니다. 데이터베이스명.테이블명

LEFT JOIN 예시

database_1에는 products라는 테이블이 있습니다.

[products]

product_id (PK) product_name
1 Laptop
2 Tablet
3 Monitor
4 Printer
5 Keyboard

 

database_2에는 prices라는 테이블이 있습니다.

[prices]

product_id (PK) product_price
1 1200
2 300
3 500
4 150
5 80

두 테이블은 서로 다른 데이터베이스에 있으나, product_id라는 기본키(Primary Key)를 가지고 있습니다. 이를 기준으로 조인하면 됩니다. 서로 다른 데이터베이스의 테이블을 조인할 땐 DB명, 테이블 스키마, 테이블명을 명시해야 합니다.

 

LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 일치하는 항목이 없으면 오른쪽의 결과는 NULL이 나옵니다. 이 예시에선 완벽하게 매칭 되기 때문에 NULL 값은 나오지 않습니다.

SELECT
tb_1.*,
tb_2.*
FROM [database_1].[dbo].[products] tb_1
LEFT JOIN [database_2].[dbo].[prices] tb_2 ON tb_1.product_id = tb_2.product_id

[결과]

product_id product_name product_id product_price
1 Laptop 1 1200
2 Tablet 2 300
3 Monitor 3 500
4 Printer 4 150
5 Keyboard 5 80
반응형

댓글

Designed by JB FACTORY