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
운영게시판
최근게시물
DB2 Q&A 1617 게시물 읽기
No. 1617
조인 관련 질문드립니다.
작성자
이도희
작성일
2008-05-27 11:29
조회수
10,389

create table pk_uk(id integer not null, id1 integer not null );

id컬럼에는 unique key를 걸고, id1에는 primary key를 걸려고 합니다.


그래서 이 테이블에 대한 key정보를 카탈로그뷰인 syscat.tabconst와 syscat.keycoluse에서 조인해서 가지고 오려고 하는데요.

왜냐하면 제가 필요한 정보인 key 타입은 tabconst에는 있지만, keycoluse에는 없고, column 이름은 keycoluse에는 있는데 tabconst에는 없어서 조인하려고 합니다.


 db2 "SELECT  SYSCAT.keycoluse.TABNAME, SYSCAT.keycoluse.CONSTNAME,  SYSCAT.KEYCOLUSE.COLNAME, syscat.tabconst.tabschema, syscat.tabconst.type         

    FROM  SYSCAT.KEYCOLUSE inner  join  SYSCAT.TABCONST ON syscat.keycoluse.TABname = syscat.tabconst.tabname where syscat.tabconst.tabname ='PK_UK' and syscat.tabconst.tabschema = 'DOHEE'"


TABNAME   CONSTNAME         COLNAME        TABSCHEMA            TYPE

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

PK_UK      SQL080523195822240           ID           DOHEE                  U  

PK_UK            SQL080523195822240      ID             DOHEE         P  

PK_UK      SQL080523195836970           ID1           DOHEE           U  

PK_UK              SQL080523195836970   ID1        DOHEE                P  


  4 record(s) selected.


위의 쿼리를 실행하면 이렇게 4개의 행이 나옵니다. 근데 여기서 첫번째행과 마지막 행만 검색이 되어야 하는데 중간 두행이 불필요하게 나오고 타입도 틀리게 나오네요 ㅠㅠ 딱 제가 원하는 2행만 나오게 검색하려면 어떻게 해야 하나요..

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

인덱스 조회는 syscat.indexes를 이용하는게 편합니다. 

db2 "select substr(tabname,1,20),substr(indname,1,15),substr(COLNAMES,1,30),UNIQUERULE from syscat.indexes where tabname='PK_UK'"

조는 냥이님이 2008-05-27 13:09에 작성한 댓글입니다.
이 댓글은 2008-05-27 13:10에 마지막으로 수정되었습니다. Edit

감사드립니다.

한가지만 더 여쭤볼게요~


알려주신 방법대로 컬럼을 조회하니까 colname앞에 +가 붙어서 정보센터에서 syscat.indexes에 대한 정보를 보니깐 colname컬럼에 대해 "각각 오름차순 또는 내림차순을 나타내기 위해 앞에 + 또는 -가 오는 컬럼 이름 목록. 경고: 이 컬럼은 나중에 제거됩니다. 이 정보에 대해서는 SYSCAT.INDEXCOLUSE를 사용하십시오." 라는 설명이 있는데, 봐도 무슨 말인지 잘 모르겠네요.

이도희님이 2008-05-27 14:50에 작성한 댓글입니다. Edit
db2 "create table t1(c1 int, c2 date)"
db2 "create index ixt101 on t1(c2 desc)" 

인덱스 생성시 default는 acending입니다. 
인덱스 생성시 desc를 지정하면 역순부터 조회를 하게 됩니다.(조회시 컬럼앞에 +표시)
1천만건 테이블에서 자주 사용되는 것이 최근 며칠 데이터라면 이득을 볼 수 있습니다.(조회시 컬럼앞에 - 표시)  
자동으로 order by desc 도 되구여.

조는 냥이님이 2008-05-27 16:25에 작성한 댓글입니다.
이 댓글은 2008-05-27 16:27에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1620IDENTITY ALWAYS 컬럼 값 받아오는 방법 [1]
조성환
2008-05-30
11225
1619날짜관련문제... [3]
윤동민
2008-05-29
11772
1618스토어드프로시저 빌드관련 문제 [11]
박경욱
2008-05-29
10813
1617조인 관련 질문드립니다. [3]
이도희
2008-05-27
10389
1616디비쿼리문좀 만들어주세요~ [4]
윤동민
2008-05-26
11310
1615간단한 시간질문 [2]
윤동민
2008-05-26
9956
1613자바 어플리케이션 개발 예제
김기복
2008-05-26
10477
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다