해결된 질문
작성
·
291
답변 1
1
합격가자님 안녕하세요:)
inner join에 대해서 아래 2개의 차이가 뭐냐 라는 질문으로 이해했는데요.
select *
from table1 as t1
inner join
(
select *
from table2
) t2
on t1.product_id=t2.product_id;
select *
from
(
select *
from table1
)t1
inner join table2 as t2
on t1.product_id=t2.product_id;
몇 가지 중요한 포인트를 나열해보겠습니다.
이 중에서 이해가 안가시다면, 편하게 질문 부탁드립니다.
inner join: A inner join B를 하든, B inner join A를 하든 똑같습니다.
-> 그렇기 때문에 서브쿼리를 적용할시 from 절 이후에 서브쿼리가 들어가기도 하고 아니면 inner join 이후 서브쿼리가 들어가는 경우가 있는데, 똑같습니다.
join과 서브쿼리는 별개입니다. 합격가자님께서 이 2개를 같이 혼용해서 헷갈려하신다는 느낌을 받아서 말씀 드립니다.
서브쿼리는 보통 group by 사용/where절에 조건 추가한 후에 사용할 것입니다.
추가 설명 드리자면, 아래 서브쿼리를 안 쓴 버전과 select * from sales 서브쿼리 쓴 버전이 있는데요. 서브쿼리를 쓴 버전이 문법적으로 틀리지 않고 당연히 써도 되겠지만, 굳이 select * from sales 이렇게 쓸 목적으로 서브쿼리를 쓰지는 않을 것입니다. 보통 쓰게 된다면 group by/where 조건을 사용하기 위해(=결과를 간소화하기 위해) 서브쿼리를 사용할 것입니다.
SELECT *
FROM SALES AS S
INNER JOIN PRODUCT AS P
ON S.PRODUCT_ID = P.PRODUCT_ID;
SELECT *
FROM
(
SELECT *
FROM SALES
) AS S
INNER JOIN
(
SELECT *
FROM PRODUCT
) AS P
ON S.PRODUCT_ID = P.PRODUCT_ID;
left outer join: A left outer join B와, B left outer join A는 다릅니다!
이 부분 꼭 inner join과 구별하시길 바랍니다.
친절한 답변 감사합니다!! 이해가 잘되었습니다 ㅠㅠ