database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 3478 게시물 읽기
No. 3478
또 (+)질문..
작성자
초보입니다(kimsh520)
작성일
2017-08-31 12:20ⓒ
2017-08-31 12:25ⓜ
조회수
2,795

궁금한게있어 자꾸 올리게되네요;;

 

FROM C_OFF_DUTY_USER A ,C_CD_NM B

WHERE A.OFF_USER_ID = '102306'

AND A.OFF_DUTY_REASON = B.CD_ID(+)

AND B.LANG_CD(+) = 'ko-KR'

---------------------------------------------

위에문을 (+)기호를 없애면

FROM C_OFF_DUTY_USER A LEFT OUTER JOIN C_CD_NM B ON A.OFF_DUTY_REASON = B.CD_ID

AND B.LANG_CD = 'ko-KR'

WHERE A.OFF_USER_ID = '102306' 이거인데요

혹시 저기있는 B.LANG_CD ='ko-KR'을

 

FROM C_OFF_DUTY_USER A LEFT OUTER JOIN C_CD_NM B ON A.OFF_DUTY_REASON = B.CD_ID

WHERE A.OFF_USER_ID = '102306'

AND B.LANG_CD = 'ko-KR' 이렇게 WHERE 절에 작성해도 같은 건가요..이렇게하면 결과값이 같게나오나요?

 

어떻게보면 JOIN걸어줄때 조건을 걸어 가져온데이터를 WHERE 절에서 처리하는거랑 / JOIN걸어주고 WHERE 절에서 처리하는거랑 값이 틀릴수 있지않나요?

 

이 글에 대한 댓글이 총 6건 있습니다.

B.LANG_CD = 'ko-KR' 이 조건이
1. ON 절에  있으면
  - 해당 조건을 만족하는 것만 조인하죠.
  - 단, 아우터 조인이므로 해당 조건을 만족 하지 않더라도 A 는 나옵니다.
2. WHERE 절에  있으면
  - 아우터 조인이 발생한 이후에 필터 조건으로 걸립니다.
  - 결과적으로 아우터 조인 효과가 없어집니다.
  - 조건을 만족하지 못하면 A 가 안나오죠.

마농(manon94)님이 2017-08-31 17:19에 작성한 댓글입니다.

그말은 즉

on절과 where절 위치에 따라 결과값이 다르다는 말씀이신거죠?

 

초보입니다(kimsh520)님이 2017-08-31 19:45에 작성한 댓글입니다.
이 댓글은 2017-08-31 19:45에 마지막으로 수정되었습니다.

테이브에서 ON 은 테이블에 대한 조건이고

WHERE 는 SELECT 셀렉트의 검색조건을 위한 조건문입니다

 

저도 ON 이랑 WHERE 헷갈렸는데 

 

FROM 에서 조인은 테이블끼리의 조인 조건이고 

 

WHERE 는 SELECT 에대한 검색조건임 

김성수(lovexyou)님이 2017-09-01 15:01에 작성한 댓글입니다.

 저도 초보자인데 더 초보자 이신듯합니다 ㅎㅎ

 

쿼리 쓰신거보면은 고수신거같은데 음..

 

ON 절과 WHERE 절에 따라서 값이 달라지는게 아닙니다용

 

A 테이블 INNER JOIN B 테이블

 

A테이블 . 칼럼 B.테이블 칼럼 

안에 값이 100 이있다치면

 

WHERE 칼럼 ='100' 조인은 그냥 같은칼럼이나 서로같은 기본키로 서로 같은 값에 대해서 

 

여러개의 테이블에 있는것들을 만족해서 테이블끼리 조건을 거는거지 

 

ON이랑 WHERE 는 다른개념임을 알고서 짜야해요

김성수(lovexyou)님이 2017-09-01 15:03에 작성한 댓글입니다.

 한마디로 on 조건은  테이블끼리 조인한것!

그리고 where 은 FROM절에서 조인한것!

을가지고 조건을 주어 SELECT 한다 라고생각하면되겠네요.

초보입니다(kimsh520)님이 2017-09-07 13:32에 작성한 댓글입니다.

아닙니다.
Where 절이 꼭 조인이 이루어진 뒤에 걸러내는 것은 아닙니다.
Where 절은 조인 전에 수행될수도 있고 조인 후에 수행될 수도 있습니다.
둘을 구분하는 것은 다음과 같이 구별하는 것이 가장 좋습니다.
ON 절은 조인 조건 / WHERE 절은 검색(필터링) 조건

마농(manon94)님이 2017-09-11 10:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3482DB2 port OPEN 관련 질문 입니다. [4]
보컬
2018-02-12
2600
3481DB2 에서 대량 데이터를 UPDATE 하려고 합니다. [2]
보컬
2017-12-28
2639
3479executeQuery 메소드를 갱신에 사용할 수 없습니다..
초보입니다
2017-09-07
2903
3478또 (+)질문.. [6]
초보입니다
2017-08-31
2795
3477공백 또는 0일떄 값표시하기 [2]
김성수
2017-08-29
3087
3476db2 connect [8]
초보입니다
2017-08-29
3476
3475db2 toad접속방법 [1]
초보입니다
2017-08-28
3837
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다