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 4658 게시물 읽기
No. 4658
MS-SQL 2000 쿼리 질문 (재귀?)
작성자
우세연(w2share)
작성일
2009-03-04 09:13
조회수
8,887

Table (MYTABLE) 에  구좌번호, 연결구좌  이런 컬럼들이 있습니다.

연결구좌는 구좌번호에 연결된 다른 구좌들입니다.

예를 들어 다음과 같이 있을때

구좌번호(A)   연결구좌(B)
1                     3
1                     4
1                     5
2                     3
3                     1
3                     2
3                     6
4                     1
5                     1
6                     3

이렇게 있을때  구좌번호 1에 연결된 구좌를 찾으면

3, 4, 5 가 기본으로 나오지만 구좌번호 3에게 연결구좌 2가 있기때문에
1과 2도 연결이 되고 1에 연결된 3에 또 6이 연결되어있어서
1과 6도 연결이 되게 하려고 합니다.

그래서 1 에 대한 연결구좌를 찾으면 2,3,4,5,6 이 다 나오게 하는
쿼리는 어떻게 만들어야 하나요?

예를 들기 위해서 간단하게 만든 테이블이지만 구좌번호가 몇천개 있다고
할때 구좌번호에 연결 연결 연결 되서 나올 모든 연결구좌를 다 찾아야
합니다.

오라클에서는

select distinct  B from MYTABLE
start with   A = 1
connect by nocycle prior B=A


하면 된다는데 MS-SQL 에서는 start with 가 아예 없다는군요. 어떻게 하면 비슷하게 가능 할까요?

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

온라인 설명서입니다.

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ko/udb9/html/0208b259-7129-4d9f-9204-8445a8119116.htm 참고 해보시면 좋을듯합니다.

..님이 2009-03-04 12:35에 작성한 댓글입니다. Edit
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ko/udb9/html/0208b259-7129-4d9f-9204-8445a8119116.htm 참고 해보시면 좋을듯합니다.

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

참고를 해봤는데 더 잘 모르겠는데요?
우세연(w2share)님이 2009-03-04 14:40에 작성한 댓글입니다.

오라클의

start with ....  connect by nocycle 


명령어는 계층적인 BOM구조 데이타를 조작할때 상당히 강력한  명령어이지만,

Ansi표준은 아닌것으로 알고 있습니다. 


당연히 1:1로 대치할 TSQL문은 없구요. 보통 이런경우 오라클쪽에서 해당 문장을 

반복문등으로 고쳐서 처리하는 경우가 일반적이기는 합니다. ^^;


이를 대처하는 방법은 예상하는 것처럼 임시테이블이나 커서등을 이용해서

반복문을 돌려서 처리하는 방법이 있습니다만, 그러나, 쿼리가 매우 길어질수 밖에 없습니다.


음.. 가장 근접한 대치문을 찾아본다면, 

SQL 2005이상이라면 CTE를 이용해 머리를 굴리면 대충 치환이 가능할 것 같습니다.


제가 주말에 시간이 나면 한번 짜보도록 하겠습니다. 


참 CTE는 Ansi 표준입니다.

김호범(trueccie)님이 2009-03-04 23:50에 작성한 댓글입니다.

와... 김호범님 정말 감사합니다.

근데 MSSQL 2000 에서는 CTE 가 안되는것이지요? ㅠ.ㅠ

우세연님이 2009-03-05 05:13에 작성한 댓글입니다. Edit

CTE는 2005부터 지원 하느걸로 알고 있습니다.

lnx4u님이 2009-03-06 14:02에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4661한개의 테이블에서 하위코드 가져오기.. [1]
조중연
2009-03-05
6873
4660마일리지에 유효기간이 들어갈떄,, [1]
허양민
2009-03-04
6306
4659인덱스 크기는 어느정도가 좋을까요? [1]
karerina
2009-03-04
6898
4658MS-SQL 2000 쿼리 질문 (재귀?) [5]
우세연
2009-03-04
8887
4657날짜형 변환 1시간단위 변경은? [3]
최덕현
2009-03-02
9286
4656도움을 부탁드립니다. [1]
조명희
2009-02-28
6096
4655이런 쿼리가 가능할까요 [2]
초보
2009-02-28
7628
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다