세 쿼리의 동작 차이질문입니다 0 6 2,045

by 기생오래비 [SQL Query] [2010.05.03 16:37:56]



SELECT
   FROM A, B
  WHERE A.a *= B.a
    AND B.b = '1'

 SELECT
   FROM A left outer join B
   ON  A.a = B.a
  WHERE B.b = '1'

 SELECT
   FROM A left outer join B
   ON A.a = B.a
  AND B.b = '1'

이 세쿼리에 동작이 어떠한 차이가 있는지 알고 싶습니다..

by 마농 [2010.05.03 17:07:26]
1번은 오라클 쿼리가 아닌듯 하네요.

2번은 오라클 쿼리로 변경하면
SELECT *
FROM a, b
WHERE a.a = b.a(+)
AND b.b = '1'
이 쿼리는 a를 기준으로 해서 b와의 조인이 성공하지 않아도 a는 무조건 나오고자 하는 의도로 아우터 조인을 했으나,
마지막 조건인 b.b = '1'에 의해 아우터 조인의 의도와 달리 조인에 성공한 자료만 나오게 됩니다.

3번은 오라클 쿼리로 변경하면
SELECT *
FROM a, b
WHERE a.a = b.a(+)
AND b.b(+) = '1'
이 쿼리는 처음 의도대로 아우터 조인이 이루어집니다.

by ^^ [2010.05.03 17:29:54]
1번은..Sybase 문법이네요..

by 김신 [2010.05.03 17:42:09]
LATERAL VIEW 에 관한 내용을 알고자 적으신것 같은데.
혹시 2번과 3번에 B.B1 = '1' 이 부분이 A.B1 = '1' 이 아닌가요?


by 채용근 [2010.05.04 09:58:16]
1번 Sybase 문법 아닙니당~ mssql인듯

by ^^ [2010.05.04 10:32:18]
mssql은 잘 모르겠고..Sybase IQ문법 맞습니다..

by 채용근 [2010.05.04 10:39:43]
햇갈렸네요 Sybase outer도 같네요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입