Skip to content

[레벨:14]id: id: l2zeo
댓글 0 조회 수 6269 추천 수 0
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print
?

단축키

이전 문서

다음 문서

+ - Up Down Comment Print

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.


번호 제목 글쓴이 날짜 조회 수
37 SET LOCK_TIMEOUT   [레벨:28]id: ADMINPLAY 2012.01.16 3130
36 SQL Server 2008 R2 버전에서 지원하는 기능   [레벨:28]id: ADMINPLAY 2011.03.30 3330
35 Fatal error: Call to undefined function: mssql_co...   [레벨:28]id: ADMINPLAY 2010.06.03 6301
34 DBCC SHRINKFILE 트랜잭션 로그파일 축소   [레벨:14]id: id: l2zeo 2010.05.29 5132
33 마소제공 mssql 관리툴   [레벨:28]id: ADMINPLAY 2010.04.23 5678
32 SQL Server 데이터 파일 축소   [레벨:14]id: id: l2zeo 2010.03.28 7684
» [FAQ]join을 하다가 막혔어요..   [레벨:14]id: id: l2zeo 2010.02.25 6269
30 [FAQ]mssql2005 디버깅 어떻게 해야 하나요?  fileimage [레벨:14]id: id: l2zeo 2010.02.25 7988
29 [FAQ]하나의 서버에 두개의 database를 설치하려고 합니...   [레벨:14]id: id: l2zeo 2010.02.25 7012
28 데이터 원본에 저장 프로시저 사용하기  fileimage [레벨:14]id: id: l2zeo 2010.02.25 6233
27 MSSQL 버전별 최대 용량 비교표   [레벨:14]id: id: l2zeo 2010.02.24 6585
26 SQL Server 2008의 새로운 기능 - Parameter Embedd...   [레벨:14]id: id: l2zeo 2010.02.24 5050
25 SQL서버 성능카운터 활용을 위한 팁  file [레벨:14]id: id: l2zeo 2010.02.24 5396
24 SQL Server 2005 백업 설정 방법  fileimage [레벨:14]id: id: l2zeo 2010.02.24 6190
23 SQL Agent 작업 실행 상태 확인하기   [레벨:14]id: id: l2zeo 2010.02.23 5406
22 DB 서버에 특정 IP 접근 차단 방법  fileimage [레벨:14]id: id: l2zeo 2010.02.21 7336
21 [MSSQL 2000] 성능 모니터링  fileimage [레벨:14]id: id: l2zeo 2010.02.21 4368
20 [SQL Server] Build Number of Each Version of ...   [레벨:28]id: ADMINPLAY 2009.12.20 3497
19 [MSSQL] “시간제한이 만료되었습니다.”라는 메시지가 ... [1]   [레벨:28]id: ADMINPLAY 2009.11.26 6215
18 MSSQL 2005 접속 클라이언트(mssql server management S...   [레벨:28]id: ADMINPLAY 2009.11.26 6729
Board Pagination ‹ Prev 1 2 Next ›
/ 2
Designed by hikaru100

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

SketchBook5,스케치북5

순위 출석시각 별명 당일기록
출석한 회원이 없습니다.

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234