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 1227 게시물 읽기
No. 1227
쿼리를 어떻게 해야하나요?
작성자
붕붕이
작성일
2004-03-09 19:03
조회수
4,038

table tb_a_group

pindex     cuser      tb_a_time

1             이상두     2004-03-04 13:00

2             이지용     2004-03-04 15:00  

3             이한국     2004-03-04 17:00  

 

table tb_b_group

pindex     cuser      tb_b_time

1             김두성     2004-03-04 12:00

2             박정일     2004-03-04 16:00  

3             용가리     2004-03-04 18:00  

 

결과

들어온 시간 순서대로 레코드를 얻고 싶을경우 어떻게 해야 할까요?

또한 그 사람이 a_grpup이었는지 b_group이었는지를 구분도 같이 해야하구요

pindex     cuser      입장시간                  그룹

1             김두성     2004-03-04 12:00        b

1             이상두     2004-03-04 13:00        a

2             이지용     2004-03-04 15:00        a

2             박정일     2004-03-04 16:00        b

3             이한국     2004-03-04 17:00        a

3             용가리     2004-03-04 18:00        b

 

고수님들의 답변을 부탁드립니다.

 

 

 

 

 

 

 

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

관건은 두 테이블 모두 직원테이블이라서 한번에 보여주어야, 즉 하나의 결과셋으로 반환해야된다는 점인데 이것은 union 키워드로 얼마든지 가능하다. 거기에 order by 로 정렬만 잘 해주면 된다. 다음은 실제 예제로 테스트한 결과이다.


create table a_group ( pindex int primary key, cuser varchar(20), tb_a_time smalldatetime)

go

insert into a_group values(1,'이상두','2004-03-04 13:00')

insert into a_group values(2,'이지용','2004-03-04 15:00')

insert into a_group values(3,'이한국','2004-03-04 17:00')

go


create table b_group ( pindex int primary key, cuser varchar(20), tb_b_time smalldatetime)

go

insert into b_group values(1,'김두성','2004-03-04 12:00')

insert into b_group values(2,'박정일','2004-03-04 16:00')

insert into b_group values(3,'용가리','2004-03-04 18:00')

go


select pindex, cuser, tb_a_time as 입장시간, 'a' as 그룹 from a_group

union all

select pindex, cuser, tb_b_time, 'b' from b_group

        order by 3 asc


참고해야 될 점이 있다면, 여러 테이블의 데이터를 한 번에 출력해 주는 union 키워드를 사용할 때,

1) 정렬은 항상 맨 마지막의 select 절에 지정한다.

2) 각 테이블마다 매칭되는 컬럼의 이름이 서로 다르다면, 정렬시 컬럼의 이름이 아닌 컬럼의 순서를 써 주어야 한다.

3) 혹시 모든 컬럼값이 같은 데이터가 중복될 수 도 있으므로 이를 피하고 모두 출력해주기 위해서는 'all' 키워드를 사용한다. 물론 중복된 데이터가 있을때 한 번만 출력하기를 원한다면 ‘all'키워드를 생략한다.

4) 컬럼의 alias 즉 별명을 주고 싶다면, 가장 첫 번째 select 절에서 설정한다. 이후 select 절에서 설정을 해도 첫 번째 select 절에서 설정한 컬럼명이 우선된다.

훔...님이 2004-03-09 20:42에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1230관계설정이 맞는말인가요??
안병훈
2004-03-10
3048
1229Text 데이터 타입.. [1]
초보
2004-03-10
3944
1228질의 [2]
나그네
2004-03-09
3499
1227쿼리를 어떻게 해야하나요? [1]
붕붕이
2004-03-09
4038
1226어떻게 select문을 해야할지 난감합니다. [2]
윤파워
2004-03-07
3995
1225하나의 테이블에 여러명의 사용자가 insert할때 특정칼럼에 제한 [1]
최혜정
2004-03-06
3370
1224쿼리문제2??? [2]
예진아빠
2004-03-05
4035
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다