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
운영게시판
최근게시물
Oracle Q&A 38926 게시물 읽기
No. 38926
쿼리 관련 질문 드립니다.
작성자
김종열(bongji123)
작성일
2011-09-29 12:33
조회수
4,543

 

안녕하세요?  쿼리문 관련하여 질문을 드립니다.

A 테이블 - 인사정보

B. 테이블 - 가족정보

C 테이블 - 진급정보

3개 테이블에서 데이터를 추출하려고 합니다.

 

사번     이름        가족관계   이름          진급내역

0001   홍길동     아버지     홍삼식      2011/9월20일  대리

                             어머니     김말자

                            아들           홍명태

0002   김길동   아버지      김삼식      2011/9월20일  주임

                             어머니     홍말자

                            아들           김명태

 

이렇게 데이터를 뽑아 낼려면 어떻게 쿼리를 만들어야 하나요??

설명이 부족한것 같은데... 조언 부탁드립니다.

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

진급정보는 history 성 데이터 인가요?

select a.사번, a.이름, b.가족관계, b.이름, c.진급내역 from 인사정보 a, 가족정보 b, 진급정보 c

where a.사번=b.사번  and a.사번 = b.사번 order by a.사번, b.가족관계

하시면 아래와같이 나오겠네요..

 사번      이름      가족관계     이름       진급내역

00001   홍길동    아버지     홍삼식    2011/9월20일     대리

00001   홍길동    어머니     김말자    2011/9월20일     대리

00001   홍길동    아들         홍명태    2011/9월20일     대리

00002   김길동    아버지     김상식    2011/9월20일     주임

00002   김길동    어머니     홍말자    2011/9월20일     주임

00002   김길동    아들         김명태    2011/9월20일     주임

각각 테이블의 샘플자료라도 올려주셔야 상세한 답변이 가능하겠네요

1님이 2011-09-29 14:33에 작성한 댓글입니다. Edit

서로 연관성 없는 정보를 한테이블에 동시에 보여주려고 하시네요.
진급내역이 1건이라면 상관 없겠지만 여러건이라면 문제가 됩니다.
m : n 조인의 결과는 m*n 건이 나와 버리니까요.

우선 진급내역이 1건인지?
아니면 여러건 중에 최신내역 1건만 가져오는것인지?
아니면 여러건을 모두 가져와야 하는지를 알아야겠네요.

1건만 가져오는 경우라면 사번만 조인하면 원하는 결과가 나옵니다.
다만 사번, 이름, 진급내역을 1번만 보여주려면 별도 가공을 해야 합니다.
ROW_NUMBER() OVER(PARTITION BY 사번 ORDER BY 1)
이 값이 1인 경우에만 출력하도록 Decode를 이용하시면 됩니다.

진급내역 여러건을 모두 가져와야 하는경우라면?
가족내역과 진급내역간의 연결고리를 하나 더 추가해야 합니다.
이 역시 다음 값을 두집합에 대해 각각 구해 연결고리로 이용하시면 됩니다.
ROW_NUMBER() OVER(PARTITION BY 사번 ORDER BY 1)

ORDER BY 1 이라고 한 부분에서 1 부분에는 각각의 정렬기준을 주시면 됩니다.
특별한 정렬기준이 없다면 그냥 1 하셔도 되구요.

쿼리 도움을 받으시려면 위에 언급된 몇가지 사항에 대해 알려주세요.

마농(manon94)님이 2011-09-30 09:41에 작성한 댓글입니다.

답변 감사합니다.

마농님의 조언을 참고하여 해결하고 있습니다.

한가지 걸리는게 있는데요.

진급정보는 history 성입니다.

가족사항과 진급정보를 조인 시킬려고 하는데..

가족구성원의 수와, 진급 횟수가 다르면 데이터를 가져오는데 문제가 있더라구요..

이건 어떤 방법으로 해결이 가능할까요??

김종열(bongji123)님이 2011-09-30 10:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38930캐릭터셋 관련 일본어 저장 질문이요 도와주세요.
이종성
2011-09-30
3895
38929tansname.ora 궁금한점 입니다. [2]
장영권
2011-09-30
3789
38927아래질문의 추가 정보 입니다. [3]
김종열
2011-09-30
5077
38926쿼리 관련 질문 드립니다. [3]
김종열
2011-09-29
4543
38925IIS관리자에서 응용프로그램 풀 기본값 설정에서 32bit사용을 했을때 DB연결 방법 문의 [1]
김수진
2011-09-29
5359
38923【DB설계】컬럼수가 130개정도 데이타 1만5000건 검색 [4]
열심히
2011-09-29
5611
38922ora-600 관련 급 질문 [1]
손님
2011-09-28
7796
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다