한 테이블 내에서 중복 관련 검색 질문 0 9 4,293

by 손님 중복 [2009.04.02 14:51:30]


 

 

안녕하세요.

쿼리를 통해서 알아내야 될 것이 있는데 잘되지 않아서 문의드립니다.

 

테이블명 table

컬럽    A  B   C   D  E

 

위와 같이 구성된 테이블이 있다고 치면 특정 값을 입력하면

특정값에 대해서 E컬럼에서 검색하여 입력한 값을 찾게 됩니다.

그렇게 찾아진 내용에서 D컬럼 내용중  D의 내용이 같은 값이 있는 것이 나타나게 해야됩니다.

각각의 A B C D E의 값들은 다른 값들이 있습니다.

 

즉, 정리하면 select ~ wher e=’삐리리’ 하게되면 e가 삐리리 인것들이 나오게됩니다.

그 결과에서 D의 값이 중복되는 것들이 있습니다. 그 중복되는 값들만 뽑아내는 쿼리를

잘 모르겠습니다. 서브 쿼리를 쓰면 될것 같은데 잘모르겠네요 @_@

 

by 손님 [2009.04.02 14:58:54]
질문을 이해를 못하겠네요??

하나의 테이블에서 D칼럼에 있는 값이 C칼럼에도 있는 것을 찾는건가요??

by 손님 [2009.04.02 15:30:34]
질문을 약간 수정하였습니다. 각각의 컬럼 값은 다 다른내용이며
즉 하나의 쿼리로 E에 있는 삐리를ㄹ 찾은 결과에서 D컬럼의 내용들중 중복되는 것을 찾으면됩니다.

by 서성우 [2009.04.02 15:41:53]

SELECT a,b,c,d,e FROM 테이블
WHERE d IN (SELECT * FROM 테이블 WHERE e = '삐리리')


제가 잘 이해 한것인지...

by 손님 [2009.04.02 15:48:01]
값은 수가 너무 많다고 에러나네요;; 질문이 조금 이상한가봐요 ^^;;;;

d는 특정값이 아니고 e컬럼의 where절로인해 나온 d컬럼내의 여러 내용들중
그 내용이 중복되는 것을 찾아야됩니다 ㅠㅠ;;
제 설명이 많이 부족한데 답글 달아주신분께 감사드립니다.
이리저리 더 찾아봐야겠네요^^

by 현 [2009.04.02 16:06:42]
서성우님 답변중
서브쿼리의 *를 실제 d컬럼과 비교되는 컬럼으로 주셔야 합니다.

by 손님 [2009.04.02 16:11:37]

현님 말씀처럼하면 d컬럼의 같은 값에 대해서만 나오는것 같은데요...
e컬럼의 where e=' 삐리리'를 만족하는 것중 D컬럼 내의 데이터가

여기서 where e='삐리리'를 만족하는 값 내에서만 재 검색이 되어야됩니다.

삐리리A / 삐리리B / 삐리리C /삐리리 A 가 잇다면,
삐리리 A가 최종결과로 나와야되는데
위의 쿼리로는 다른형태의 결과가 나타납니다.

by 서성우 [2009.04.02 16:15:40]
SELECT a,b,c,d,e FROM 테이블
WHERE d IN (SELECT d FROM 테이블 WHERE e = '삐리리'
GROUP BY d HAVING Count(*) > 1)

by 손님 [2009.04.02 17:38:50]
서성우님 감사합니다. __) 잘되네요
그런데 WHERE d IN 을하였는데 ( ) 안의 쿼리만 사용해도
같은 결과가 되는건 아닌지요?? ^^;; ()안의 쿼리를 이용하게되면,
e의 where 이 나오게되고 그 결과에서 d를 그룹해서 1개 이상인것이니깐
in을 안해줘도 되는게 아닌가요 ^^;;


by 서성우 [2009.04.02 17:52:04]
그렇네요 ㅎㅎ

위의 조건대로만 하다가 보니 그렇게 됐네요 ㅎㅎ

말씀대로 ()안에 있는 것만 돌려도 원하는 결과가
나오겠군요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입