PostgreSQL INNER JOIN을 사용하여 여러 테이블에서 데이터를 선택하는 방법
- 관계 데이터베이스에서 데이터는 일반적으로 둘 이상의 테이블에 분산됩니다.
- 완전한 데이터를 선택하려면 여러 테이블에서 데이터 쿼리해야하는 경우가 많습니다.
- INNER JOIN을 사용하여 여러 테이블의 데이터를 결합합니다.
-- 두 테이블에서 데이터를 선택하려면 INNER JOIN절을 사용
SELECT
pka,
c1,
pkb,
c2
FROM
A
INNER JOIN B ON pka = fka;
- SELECT절에서 선택하려는 두 테이블의 열을 지정합니다.
- A(주 테이블)를 지정합니다.
- B에서 INNER JOIN 하고 ON 키워드 뒤에 조인 조건을 제공합니다.
- 각 행에 대해 A 내부 조인은 pka열의 값을 테이블의 모든 행에 있는 fka 열의 값과 비교합니다.
- 이러한 값이 같으면 내부 조인은 두 테이블의 모든 열을 포함하는 새 행을 만들고 결과 집합에 추가합니다.
- 이러한 값이 같지 않으면 내부 조인은 해당 값을 무시하고 다음 행으로 이동합니다.
- 대부분의 경우 조인하려는 테이블에 같은 이름이 있습니다.
- 오류를 예방하기 위해서 table_name.column_name으로 할당합니다.
1) PostgreSQL INNER JOIN을 사용하여 두 테이블 조인
-- customer_id에서 0보다 많은 지불을 한 쿼리
SELECT
customer.customer_id,
first_name,
last_name,
amount,
payment_date
FROM
customer
INNER JOIN payment
ON payment.customer_id = customer.customer_id
ORDER BY payment_date;
테이블 별칭을 사용할 수 있습니다.
SELECT
c.customer_id,
first_name,
last_name,
email,
amount,
payment_date
FROM
customer c
INNER JOIN payment p
ON p.customer_id = c.customer_id
WHERE
c.customer_id = 2;
- 테이블 모두 동일한 customer_id 열을 가지고 있으므로 USING 구문을 활용할 수 있습니다.
SELECT
customer_id,
first_name,
last_name,
amount,
payment_date
FROM
customer
INNER JOIN payment USING(customer_id)
ORDER BY payment_date;
2) PostgreSQL INNER JOIN을 사용하여 3개의 테이블 조인
-- 세 개의 테이블을 조인하는 쿼리
SELECT
c.customer_id,
c.first_name customer_first_name,
c.last_name customer_last_name,
s.first_name staff_first_name,
s.last_name staff_last_name,
amount,
payment_date
FROM
customer c
INNER JOIN payment p
ON p.customer_id = c.customer_id
INNER JOIN staff s
ON p.staff_id = s.staff_id
ORDER BY payment_date;
반응형
'SW ENGINEERING > Postgres' 카테고리의 다른 글
[PostgreSQL] BASIC - HAVING (0) | 2021.09.02 |
---|---|
[PostgreSQL] BASIC - GROUP BY (0) | 2021.09.02 |
[PostgreSQL] BASIC - NATURAL JOIN (0) | 2021.09.02 |
[PostgreSQL] BASIC - Cross JOIN (0) | 2021.09.02 |
[PostgreSQL] BASIC - Table Aliases (0) | 2021.09.02 |
최근댓글