Skip to content

조회 수 16735 추천 수 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
번호 제목 글쓴이 날짜 조회 수
19 [MSSQL] “시간제한이 만료되었습니다.”라는 메시지가 나옵니다... 1 ADMINPLAY 2009.11.26 21589
18 MSSQL 2005 접속 클라이언트(mssql server management Studio ... ADMINPLAY 2009.11.26 16335
17 Ms-Sql 백업 format옵션 ADMINPLAY 2009.11.26 9850
16 sql 설명들... ADMINPLAY 2009.11.26 7130
15 MS-SQL 클라이언트 설치 방법 ADMINPLAY 2009.11.26 16254
14 MsSQL에서 소유자(mssql2000 => mssql2005으로 복원) ADMINPLAY 2009.11.26 9323
13 SQL2005 --> SQL2000 으로 디비 옮기는 방법 ADMINPLAY 2009.11.26 8170
12 MSSQL 접속 방법 ADMINPLAY 2009.11.26 9163
11 [MS-SQL] DB Table 소유자변경 ADMINPLAY 2009.11.24 8756
10 MSSQL 클러스터 ADMINPLAY 2009.11.19 9663
9 MSSQL 파일사이즈 줄이기 ADMINPLAY 2009.11.10 7519
8 SQL Server DBA 가이드 ADMINPLAY 2009.11.10 12667
7 The log file for database 'board' is full 해결방법 ADMINPLAY 2009.06.04 7949
6 mssql2005 원격접속 허용 - 노출 영역 구성 ADMINPLAY 2009.06.04 10424
5 MSSQL 트랜잭션로그삭제 ADMINPLAY 2009.05.15 11520
4 sa계정 패스워드변경하기 1 ADMINPLAY 2009.05.07 10897
3 Firehose 모드에서는 트랜젝션을 시작할수 없습니다 ADMINPLAY 2009.04.13 7493
2 php에서 mssql 연동방법(총정리) ADMINPLAY 2009.04.13 16783
1 mysql 대량 쿼리 보내기 ADMIN 2008.12.14 8786
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234