*** where 안에 select... 여러개 값을 가질수 있으므로 in, exists, any를 써야한다는 내용...

 

 where안에 select좀 풀어주실분?  | General Discussions (일반 사항) 2010-09-09 오후 7:36:41
자유시대 번호: 8448 추천:0  / 읽음:128

select *
from OdrInf od
where od.OdrChtNum =  (Select  o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉  od.OdrChtNum = o.OcmChtNum 
From ocminf o join pbsinf p
on o.ocmchtnum = p.pbschtnum
where o.ocmacpdtm like '200804%') --2008년04월의 o.OcmChtNum을 모두 가져옴니다

에러내용

메시지 512, 수준 16, 상태 1, 줄 2
하위 쿼리에서 값을 둘 이상 반환했습니다. 하위 쿼리 앞에 =, !=, <, <=, >, >= 등이 오거나 하위 쿼리가 하나의 식으로 사용된 경우에는 여러 값을 반환할 수 없습니다.

 

 

 

정리해서 말하자면 2008년04월의 o.OcmChtNum 다가져와서 od.OdrChtNum = o.OcmChtNum  차트넘버같은거 다 가져올려면

어떻게해야하나요?

이 글에 답변 등록하기
[채택답변] IN
0
2010-09-10 오전 7:47:42
질문자 인사 : 친절한 답변 감사드려요~^^
  정홍주 (hongju)  정홍주님께 메시지 보내기정홍주님을 내 주소록에 추가합니다.정홍주님의 개인게시판 가기 번호: 8449  

 

(Select  o.OcmChtNum --  이 구문에서 여러 값이 반환되는데  '=' 로 처리하고 있어서 발생합니다.

 

 

로직을 정확히 잘 모르겠지만 여러 값이 반환되므로 하나의 값만 반환되게 하거나

 

 '=' 대신에 IN 이나 Exists 구문으로 변경할 수 있습니다.

 

 

where od.OdrChtNum IN  (Select  o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉  od.OdrChtNum = o.OcmChtNum 

 [답변]IN 2010-09-09 오후 9:48:17
정홍주 (hongju)  정홍주님께 메시지 보내기정홍주님을 내 주소록에 추가합니다.정홍주님의 개인게시판 가기 번호: 8449 추천:0  

 

(Select  o.OcmChtNum --  이 구문에서 여러 값이 반환되는데  '=' 로 처리하고 있어서 발생합니다.

 

 

로직을 정확히 잘 모르겠지만 여러 값이 반환되므로 하나의 값만 반환되게 하거나

 

 '=' 대신에 IN 이나 Exists 구문으로 변경할 수 있습니다.

 

 

where od.OdrChtNum IN  (Select  o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉  od.OdrChtNum = o.OcmChtNum 

이 글에 답변 등록하기
 [답변]ㅇㅇ 2010-09-10 오전 9:54:20
조성훈 (nix80)  조성훈님께 메시지 보내기조성훈님을 내 주소록에 추가합니다.조성훈님의 개인게시판 가기 번호: 8452 추천:0  

쿼리 변경없이 하실려면

앞에 저거 하나 붙이셔도 됨

 

select *
from OdrInf od
where od.OdrChtNum = any(Select  o.OcmChtNum --가져온 값을 o.OdrChtNum 이랑 즉  od.OdrChtNum = o.OcmChtNum 
From ocminf o join pbsinf p
on o.ocmchtnum = p.pbschtnum
where o.ocmacpdtm like '200804%') --2008년04월의 o.OcmChtNum을 모두 가져옴니다

+ Recent posts