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
운영게시판
최근게시물
MS-SQL Q&A 1481 게시물 읽기
No. 1481
다단계 조직도 테이블 구조 또는 쿼리방법(고수님의 도움 급요)
작성자
김영목
작성일
2004-08-12 19:31
조회수
6,501

회원코드 추천회원
1111 2222
1111 3333
2222 4444
2222 5555
3333 6666
3333 7777
... ....

이런 식으로 회원마스타를 구성하였을 때
한 회원을 기준으로 추천회원을 계속 연결하여 조회할 수 있는 테일블 구조나 쿼리 방법이
있을까요?

1111 - 2222 - 4444
- 5555
- 3333 - 6666
- 7777 ....

오라클에서는 순환고리형 자료구조라 하여 특별한 명령이 있다는데 MS-SQl을 사용하여야 하거든요
참고고 오라클 예제를 올립니다

1. 상위 한부서에서 하위특정level의 부서를 모두 찾는다.

select dept_cd from fzj101t
where dept_lvl = '8'
connect by prior dept_cd = up_dept_cd
start with up_dept_cd = '500001'
order by dept_cd

2. 하위의 한부서에서 상위level의 한 부서를 찾는다.

select dept_cd,dept_name ,dept_lvl from fzj101t
where dept_lvl = '5'
connect by prior up_dept_cd = dept_cd
start with dept_cd = '800001'

3. 하위의 한부서에서 상위level의 한 부서를 찾으면서 자신의 내역도 가져온다.

select a.shop_no ,
(select b.dept_cd || b.dept_name from
fzj101t b
where b.dept_lvl = '5'
connect by prior b.up_dept_cd = b.dept_cd
start with b.dept_cd = a.shop_no )
from fzj103t a
where shop_no like '8E01%'
order by 2 ; /* group by 적용안됨 */

4. 상윈level의 하위 자료중에서 상위로 집계하는 정보 ( 5 -> 8 -> 7 )
select a.dept_cd ,
(select b.dept_cd || b.dept_name from
fzj101t b
where b.dept_lvl = '7'
connect by prior b.up_dept_cd = b.dept_cd
start with b.dept_cd = a.dept_cd ) kk
from (select dept_cd, dept_lvl , up_dept_cd from fzj101t
where dept_lvl = '8'
connect by prior dept_cd = up_dept_cd
start with up_dept_cd = '500001' ) a
order by dept_cd , kk
/

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

안녕하세요..

안타깝지만 MS-SQL에서는 Oacle의 Start With와 같은 구문을 지원하지 않습니다..

즉 SQL 한방으로는 해결되지는 않는다는 말이지요..

Cursor를 이용한 방법이나 VB에서는 ADO의 RecordSet을 이용해야

합니다.

 

많은 도움되셨길 바랍니다..

 

아름자리님이 2004-08-13 13:41에 작성한 댓글입니다. Edit

회원코드를 연관있게 지으면될듯하군염

회원코드 추천회원 스텝

1            0            a

2            1            aa

3            2            aaa

4            1            ab

5            1            ac

 

이런식으로  추천인의 스텝에 따라 뒤에값을 붙여가면 (예; a가 추천인 일때 최상위 다음스텝 a_를 찾은다음  aa,ab,ac,ad....를 붙이는거져)

 

스텝값 부여받는 방식 -------(asp)

sql2 = "SELECT 스텝 FROM table WHERE 회원코드 ='" & 추천회원 & "'"
  set rs2 = db.execute(sql2)
  if not rs2.eof then
  steps = rs2("steps")
  end if
  rs2.close
  set rs2=nothing

steps1 = steps & "_"

sql3 = "SELECT top 1 steps FROM table WHERE steps like '" & steps1 & "' order by steps desc"
  set rs3 = db.execute(sql3)
  if not rs3.eof then
    steps1 = rs3("steps")
    steps2 = right(steps1,1)
    steps3 = Asc(steps2) + 1
    STEPS0 = steps & Chr(steps3)
  else
    STEPS0 = steps & "a"
  end if

  rs3.close
  set rs3=nothing

 

그럼 나중에

select 회원코드,스텝 from table where steps like 'a%' order by steps

하시면  에이밑에 구조를 다찾아내겟졍...

운가라님이 2005-07-05 16:36에 작성한 댓글입니다.
이 댓글은 2005-07-05 16:50에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
148510초걸리는 Select 쿼리실행시 5초에서 중단되어도
김인태
2004-08-13
2487
1484DB자료 이전에 대한 조언을 부탁드립니다. [1]
안용찬
2004-08-13
3264
1482한 테이블에 Primay Key 를 두개 지정하는경우? [2]
윤세민
2004-08-13
17154
1481다단계 조직도 테이블 구조 또는 쿼리방법(고수님의 도움 급요) [2]
김영목
2004-08-12
6501
1480MySQL의 자료를 MS-SQL로 옮기는 방법이 궁금합니다.(초보라 좀 생소해서요) [1]
안용찬
2004-08-12
2806
1479datename(datename,getdate()) 에 대해서.. [1]
김민영
2004-08-12
3456
1478date... [3]
김민영
2004-08-11
3580
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다