Skip to content

조회 수 16732 추천 수 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하시면 됩니다.

  1. No Image 23Apr
    by ADMINPLAY
    2010/04/23 by ADMINPLAY
    Views 19889 

    마소제공 mssql 관리툴

  2. 데이터 원본에 저장 프로시저 사용하기

  3. No Image 20Dec
    by ADMINPLAY
    2009/12/20 by ADMINPLAY
    Views 34414 

    [SQL Server] Build Number of Each Version of SQL Server - MSSQL 버전정보

  4. [MSSQL] “시간제한이 만료되었습니다.”라는 메시지가 나옵니다. 어떤 메시지인가요?

  5. [MSSQL 2000] 성능 모니터링

  6. No Image 28Sep
    by ADMINPLAY
    2014/09/28 by ADMINPLAY
    Views 6617 

    [MS-SQL] MS-SQL 2000 이하에서 지원되던 오래된 쿼리 2008 이상에서도 사용하기

  7. No Image 24Nov
    by ADMINPLAY
    2009/11/24 by ADMINPLAY
    Views 8756 

    [MS-SQL] DB Table 소유자변경

  8. No Image 25Feb
    by l2zeo
    2010/02/25 by l2zeo
    Views 19702 

    [FAQ]하나의 서버에 두개의 database를 설치하려고 합니다.

  9. [FAQ]mssql2005 디버깅 어떻게 해야 하나요?

  10. No Image 25Feb
    by l2zeo
    2010/02/25 by l2zeo
    Views 16732 

    [FAQ]join을 하다가 막혔어요..

  11. No Image 04Jun
    by ADMINPLAY
    2009/06/04 by ADMINPLAY
    Views 7949 

    The log file for database 'board' is full 해결방법

  12. No Image 24Feb
    by l2zeo
    2010/02/24 by l2zeo
    Views 20195 

    SQL서버 성능카운터 활용을 위한 팁

  13. No Image 26Nov
    by ADMINPLAY
    2009/11/26 by ADMINPLAY
    Views 8170 

    SQL2005 --> SQL2000 으로 디비 옮기는 방법

  14. No Image 26Nov
    by ADMINPLAY
    2009/11/26 by ADMINPLAY
    Views 7130 

    sql 설명들...

  15. No Image 28Mar
    by l2zeo
    2010/03/28 by l2zeo
    Views 20821 

    SQL Server 데이터 파일 축소

  16. No Image 10Nov
    by ADMINPLAY
    2009/11/10 by ADMINPLAY
    Views 12667 

    SQL Server DBA 가이드

  17. No Image 24Feb
    by l2zeo
    2010/02/24 by l2zeo
    Views 18364 

    SQL Server 2008의 새로운 기능 - Parameter Embedding Optimization

  18. No Image 30Mar
    by ADMINPLAY
    2011/03/30 by ADMINPLAY
    Views 16974 

    SQL Server 2008 R2 버전에서 지원하는 기능

  19. SQL Server 2005 백업 설정 방법

  20. No Image 23Feb
    by l2zeo
    2010/02/23 by l2zeo
    Views 18166 

    SQL Agent 작업 실행 상태 확인하기

Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234