SQL 질문과 답변 게시판
안녕하세요.
쿼리문을 살펴 보다가 다음과 같은 형태의 쿼리문이 있는대
이 쿼리문은 어떤 JOIN문으로 되어 있는건지 궁금합니다.
그리고 이런 쿼리문은 어느때에 사용되는 것인지
아니면 사용 하면 문제가 많은 것인지에 대하여 알고 싶습니다.
아직 MSSQL의 초보이다 보니 말로 설명을 해주시면 잘 이해가 안되는 부분이 많습니다.
시간이 되신다면 예제를 통한 설명을 해주시면 감사하겠습니다.
SELECT *
FROM
TABLE A WITH (NOLOCK)
, TABLE B WITH (NOLOCK)
, TABLE C WITH (NOLOCK)
항상 좋은 일들만 가득하시길 기원합니다.
with yearT as
( select '2008' yy union all
select '2009' yy union all
select '2010' yy ) ,
classT as
( select '컴퓨터공학' class union all
select '경영학과' class union all
select '법학과' class union all
select '체육학과' class ) ,
hakT as
( select 1 hak union all
select 2 hak union all
select 3 hak union all
select 4 hak )
select * from yearT cross join classT
cross join hakT
-- 존재하지 않는 자료와는 어떠한 조인도 불가능합니다.


조합(cross join)이라고 보시면 됩니다.
통계성 쿼리를 만들때 많이 사용합니다.
예로 학과/학년(1~4) 의 학생수를 보여줄때...
일부 학과에 1~3학년만 있지만 각 과의 4학년까지 보여주는 쿼리를 작성할때... 값이 없는 자료는 나오지가 않죠. 당연 조인도 안될거구요...