(+) 질문드립니다. 0 6 1,507

by 둘둘하나 [SQL Query] [2022.09.01 09:29:01]


안녕하세요. (+) 관련해 궁금한 부분이 생겨 질문 드립니다.

예시 쿼리 확인 부탁 드려요.

 

select a.*

from 

categories a,

category_sets b

where

a.id = b.id(+)

and b.lang(+) = 'US'

 

파란색으로 표시된 부분은 outer join인데,

빨간 부분처럼 필드 = 필드가 아닌 필드 = 값의 경우에 (+)가 붙은 것은 어떻게 읽으면 좋을까요?

 

by pajama [2022.09.01 10:22:28]

(+) 를 안쓰면 inner join으로 바뀔 수 있습니다. outer join 대상 테이블의 컬럼에 필터조건을 걸때 (+)를 안쓰면 NULL 값이 제거되어 버려서 써주는 걸로 알고 있습니다.


by 둘둘하나 [2022.09.01 10:37:05]

답변 감사드립니다! ^^


by 포동푸우 [2022.09.01 11:05:08]

구르비에서 아래 부분을 검색해 보시면 도움이 될 것 같네요 

- inner join, full/left/right outer join

- (+) 는 oracle 표현 입니다. 


by 둘둘하나 [2022.09.22 09:12:21]

감사합니다 ^^


by 마농 [2022.09.05 14:33:04]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-- 1. 상수조건이 조인조건으로 사용되는 경우
-- 1.1. Oracle : 상수 조건에도 (+) 붙음
SELECT a.*
  FROM categories a
     , category_sets b
 WHERE a.id = b.id(+)
   AND b.lang(+) = 'US'
;
-- 1.2. ANSI : ON 절
SELECT a.*
  FROM categories a
  LEFT OUTER JOIN category_sets b
    ON a.id = b.id
   AND b.lang = 'US'
;
 
-- 2. 상수조건이 조회조건으로 사용되는 경우
-- 2.1. Oracle : 상수 조건에 (+) 없음
SELECT a.*
  FROM categories a
     , category_sets b
 WHERE a.id = b.id(+)
   AND b.lang = 'US'
;
-- 2.2. ANSI : WHERE 절
SELECT a.*
  FROM categories a
  LEFT OUTER JOIN category_sets b
    ON a.id = b.id
 WHERE b.lang = 'US'
;
-- 2.3. 이 경우 아우터 조인은 의미가 없어지게 됨. 이너조인과 동일하게 동작
SELECT a.*
  FROM categories a
 INNER JOIN category_sets b
    ON a.id = b.id
 WHERE b.lang = 'US'
;
-- 이와 같은 사용은 의도가 불분명한 애매한 사용으로 잘못 사용한 예.
-- 이너조인을 사용하던가? ON 절에 조건을 주던가? 둘 중 하나가 맞음.

 


by 둘둘하나 [2022.09.22 09:13:23]

이해에 많은 도움되었습니다 감사합니다 ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입