오라클 테이블2개 정렬문제;;
글쓴이: netizn82 / 작성시간: 목, 2006/02/02 - 11:06오전
안녕하세요..
테이블2개를 이용한 정렬 문제입니다.;;
테이블1 에는
id , postion
1, 과장
2, 부장
3, 담당
4, 담당자
5, 기타
이렇게 되어있구요,
테이블2 에는
name, addr, postion
홍길동, 울산, 담당
아무개, 서울, 과장
테스트, 강원, 담당자
.
.
이런식으로 되어있습니다.
select 문을 이용하여 출력을 해야하는데, 테이블1을 참조해서 직위별(id 순서대로) 이름을 출력하는 방법이 있을까요?
출력문:
"아무개 - 홍길동 - 테스트"
join을 써야할꺼같은데, 도저히 안되네요;;
도움을 부탁드립니다. ㅠ_ㅠ
db는 오라클입니다;
Forums:
순수 쿼리만 사용한다는 조건이니깐..직급이 고정되어 있으면 직급별
순수 쿼리만 사용한다는 조건이니깐..
직급이 고정되어 있으면 직급별 서브쿼리를 만들어서 인라인 쿼리를 필드로 구성해서 하면 되겠네요.
select 서브쿼리1.직급, 서브쿼리2.직급, ... 서브쿼리5.직급
from 테이블1, 서브쿼리1, 서브쿼리2... 서브쿼리5
where 테이블1.id = 서브쿼리1.id (+)
and 테이블1.id = 서브쿼리2.id (+)
....
테이블1.id = 서브쿼리5.id (+)
서브쿼리는 각 직급별로 내부 정렬기준(이름이던, 지역이던)을 만들어서 필요한 필드만 추출하면 되겠죠.
서브쿼리의 직급이 없는 것은 필드가 없어지니 별 문제는 없겠죠
2줄요약
1. 직급별 서브쿼리를 각각 만든다
2. 그것을 가지고 테이블1을 기준으로 아웃터 조인 시킨다.
숫자에 따라 ORDER 한다면...
차라리 테이블2에 테이블1의 id값을 가지는게 더 나아보이네요.
id와 position(postion은 오타...신가요? 그런단어는 없어뵈는데;;)은 1:1매칭이 되고, 실제 어플리케이션에서 id기반으로 자주 order한 결과값이 필요하다면 table 설계를 그렇게 하는게 더 좋아보입니다.
어쨌든...저상황에서 결과물을 한다면...
select a.name
from table1 a, table2 b
where a.position = b.position
order by b.id
이렇게 하면 되지않을까 싶은데요...안되려나? =_=;;
------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/
kalstein님, 저건 세로(필드) 데이타를 가로(레코드)로 바꾸는 문
kalstein님, 저건 세로(필드) 데이타를 가로(레코드)로 바꾸는 문제입니다.
select a.name이 아니고
한 레코드에 select a.name, a.name. a.name... 가 직급순으로 나와야 하는 거죠.
설령 위에 손님이 쓰신 것처럼 몇 차례의 서브 쿼리를 써서 SQL로 처리
설령 위에 손님이 쓰신 것처럼 몇 차례의 서브 쿼리를 써서 SQL로 처리를 할 수 있다고 하더라도 저 같으면 그렇게는 하지 않겠습니다. kalstein님 답변처럼 두번째 테이블에는 직급의 ID가 들어가는 것이 올바르고 (현 상태라면 position으로 join을 해야겠지만), 몇 줄의 결과가 나오는 것을 행으로 표현되게 가공하는 것은 SQL로 처리할 것이 아니라 다른 방법으로 해야겠죠. 같은 테이블을 몇 차례씩 쿼리하는 것은 낭비라는 생각입니다.
----
I paint objects as I think them, not as I see them.
atie's minipage
댓글 달기