2017-02-15 2 views
0

동일한 테이블을 가리키는 여러 개의 fk가있는 데이터 행이 있습니다. 나는이를 생성 할 수 있습니다 방법 :동일한 테이블을 가리키는 외래 키 열에서 여러 행을 생성

표 1

id | name | fk1 | fk2 | fk3 
1 test EA US NULL 
2 test2 Null UK US 

표 2

내가 주위 그러나 아마 찾아 봤는데이

id | name | details 
1 test East Asia 
1 test United States 
2 test2 United Kingdom 
2 test2 United States 

같은 것을 생성 할

id | details 
EA East Asia 
US United States 
UK United Kingdom 

잘못된 검색 키워드 나 구문을 입력하고 있습니다. 이것이 내가

select t1.id,t1.name,t2.details from table1 t1 
left join table2 t2 on t2.id = t1.fk1 
union 
(select t1.id,t1.name,t2.details from table1 t1 
left join table2 t2 on t2.id = t1.fk2 
) 
union 
select t1.id,t1.name,t2.details from table1 t1 
left join table2 t2 on t2.id = t1.fk3 

을했지만이 테이블은 별도의 행로 FK 컬럼의 각을 얻기 위해 널

+0

어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –

+0

작동하지 않는 경우에도 시도한 쿼리를 표시하십시오. – bouletta

+0

MSSQL.i가 해당 태그를 추가하는 것을 잊었습니다. – CyberNinja

답변

1

사용 UNPIVOT으로 행을 생성하는 것입니다

감사

.

select u.id, u.name, t2.details 
from table1 t1 
unpivot(
    region for regions in (fk1, fk2, fk3) 
) u 
join table2 t2 on t2.id = u.region 
+0

감사합니다. 이것은 완벽 해!!! 1 번 피벗을 사용합니다. – CyberNinja

관련 문제