Skip to content

조회 수 16733 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

A 테이블                     B 테이블

idx    name            user_idx   box_01    box_02    box_03    box_04    box_05
1      사자                   1            2              3             1            4            5
2      우산                   2            1              2             5            4            3
3      시계                   3            2              4             1            2            3
4      사과                   4            3              5             1            2            4
5      포도                   5            5              2             1            3            4


위와 같이 정규화를 거친 2개 테이블이 있습니다.

B 테이블을 select 해서
각 박스(box_01, box_02...)에 있는 물체의 이름을 표기해주고 싶은데
join을 어떻게 해야할지 모르겠습니다.
이런 경우는 어떤식으로 조인을 해야 하는건가요..?



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


다음과 같이 하시면 됩니다.


CREATE TABLE TABLE_A
(
 IDX INT,
 NAME VARCHAR(100)
)

CREATE TABLE TABLE_B
(
 USER_IDX INT,
 BOX_1 INT,
 BOX_2 INT,
 BOX_3 INT,
 BOX_4 INT,
 BOX_5 INT
)


INSERT INTO TABLE_A
SELECT 1, '사자'
UNION ALL
SELECT 2, '우산'
UNION ALL
SELECT 3, '시계'
UNION ALL
SELECT 4, '사과'
UNION ALL
SELECT 5, '포도'


INSERT INTO TABLE_B
SELECT 1, 2, 3, 1, 4, 5
UNION ALL
SELECT 2, 1, 2, 5, 4, 3
UNION ALL
SELECT 3, 2, 4, 1, 2, 3
UNION ALL
SELECT 4, 3, 5, 1, 2, 4
UNION ALL
SELECT 5, 5, 2, 1, 3, 4

--이렇게 준비가 끝난 후에
--쿼리는 다음과 같습니다.


SELECT TABLE_B.USER_IDX,
 MAX(CASE WHEN BOX_1 = IDX THEN NAME END) AS BOX_1,
 MAX(CASE WHEN BOX_2 = IDX THEN NAME END) AS BOX_2,
 MAX(CASE WHEN BOX_3 = IDX THEN NAME END) AS BOX_3,
 MAX(CASE WHEN BOX_4 = IDX THEN NAME END) AS BOX_4,
 MAX(CASE WHEN BOX_5 = IDX THEN NAME END) AS BOX_5
FROM TABLE_A CROSS JOIN TABLE_B
GROUP BY USER_IDX


으로 CROSS JOIN하시면 됩니다.

Who's l2zeo

profile

I see no changes, wake up in the morning and I ask myself

Is life worth living should I blast myself

Things would never be the same.


List of Articles
번호 제목 글쓴이 날짜 조회 수
39 DB 서버에 특정 IP 접근 차단 방법 file l2zeo 2010.02.21 22194
38 DBCC SHRINKFILE 트랜잭션 로그파일 축소 l2zeo 2010.05.29 21795
37 Fatal error: Call to undefined function: mssql_connect() ADMINPLAY 2010.06.03 23011
36 Firehose 모드에서는 트랜젝션을 시작할수 없습니다 ADMINPLAY 2009.04.13 7493
35 MicroSoft SQL Server 2008 1433 port 원격(외부)접속 허용하기 ADMINPLAY 2014.09.20 4969
34 Ms-Sql 백업 format옵션 ADMINPLAY 2009.11.26 9850
33 MS-SQL 클라이언트 설치 방법 ADMINPLAY 2009.11.26 16254
32 MSSQL 2005 접속 클라이언트(mssql server management Studio ... ADMINPLAY 2009.11.26 16335
31 MSSQL 버전별 최대 용량 비교표 l2zeo 2010.02.24 23862
30 MSSQL 접속 방법 ADMINPLAY 2009.11.26 9163
29 MSSQL 클러스터 ADMINPLAY 2009.11.19 9663
28 MSSQL 트랜잭션로그삭제 ADMINPLAY 2009.05.15 11520
27 MSSQL 파일사이즈 줄이기 ADMINPLAY 2009.11.10 7519
26 mssql2005 원격접속 허용 - 노출 영역 구성 ADMINPLAY 2009.06.04 10424
25 MsSQL에서 소유자(mssql2000 => mssql2005으로 복원) ADMINPLAY 2009.11.26 9322
24 mysql 대량 쿼리 보내기 ADMIN 2008.12.14 8786
23 php에서 mssql 연동방법(총정리) ADMINPLAY 2009.04.13 16783
22 sa계정 패스워드변경하기 1 ADMINPLAY 2009.05.07 10897
21 SET LOCK_TIMEOUT ADMINPLAY 2012.01.16 14544
20 SQL Agent 작업 실행 상태 확인하기 l2zeo 2010.02.23 18166
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234