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. [MS-SQL] MS-SQL 2000 이하에서 지원되던 오래된 쿼리 2008 이...

    Date2014.09.28 ByADMINPLAY Views6617
    Read More
  2. MicroSoft SQL Server 2008 1433 port 원격(외부)접속 허용하기

    Date2014.09.20 ByADMINPLAY Views4969
    Read More
  3. SET LOCK_TIMEOUT

    Date2012.01.16 ByADMINPLAY Views14544
    Read More
  4. SQL Server 2008 R2 버전에서 지원하는 기능

    Date2011.03.30 ByADMINPLAY Views16974
    Read More
  5. Fatal error: Call to undefined function: mssql_connect()

    Date2010.06.03 ByADMINPLAY Views23011
    Read More
  6. DBCC SHRINKFILE 트랜잭션 로그파일 축소

    Date2010.05.29 Byl2zeo Views21795
    Read More
  7. 마소제공 mssql 관리툴

    Date2010.04.23 ByADMINPLAY Views19889
    Read More
  8. SQL Server 데이터 파일 축소

    Date2010.03.28 Byl2zeo Views20821
    Read More
  9. [FAQ]join을 하다가 막혔어요..

    Date2010.02.25 Byl2zeo Views16732
    Read More
  10. [FAQ]mssql2005 디버깅 어떻게 해야 하나요?

    Date2010.02.25 Byl2zeo Views21073
    Read More
  11. [FAQ]하나의 서버에 두개의 database를 설치하려고 합니다.

    Date2010.02.25 Byl2zeo Views19702
    Read More
  12. 데이터 원본에 저장 프로시저 사용하기

    Date2010.02.25 Byl2zeo Views18772
    Read More
  13. MSSQL 버전별 최대 용량 비교표

    Date2010.02.24 Byl2zeo Views23862
    Read More
  14. SQL Server 2008의 새로운 기능 - Parameter Embedding Optimi...

    Date2010.02.24 Byl2zeo Views18364
    Read More
  15. SQL서버 성능카운터 활용을 위한 팁

    Date2010.02.24 Byl2zeo Views20195
    Read More
  16. SQL Server 2005 백업 설정 방법

    Date2010.02.24 Byl2zeo Views18035
    Read More
  17. SQL Agent 작업 실행 상태 확인하기

    Date2010.02.23 Byl2zeo Views18166
    Read More
  18. DB 서버에 특정 IP 접근 차단 방법

    Date2010.02.21 Byl2zeo Views22188
    Read More
  19. [MSSQL 2000] 성능 모니터링

    Date2010.02.21 Byl2zeo Views15188
    Read More
  20. [SQL Server] Build Number of Each Version of SQL Server - ...

    Date2009.12.20 ByADMINPLAY Views34412
    Read More
Board Pagination Prev 1 2 Next
/ 2

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234