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



