다음 표가 있습니다. 이들은 실제 테이블이 아니지만 개념은 여기에 있습니다.다른 테이블과 열거 형 테이블을 동적으로 결합하십시오.
Table1
----------------------------------
FieldID|EnumeratedValue|TextValue
----------------------------------
Col1 |1 |Hey
----------------------------------
Col1 |2 |Test
----------------------------------
Col1 |3 |George
----------------------------------
Col2 |1 |Random
----------------------------------
Col2 |2 |Wesley
----------------------------------
Col3 |1 |Tompson
----------------------------------
Col3 |2 |Oooo
----------------------------------
Table2
----------------------------------
Col1 |Col2 |Col3
----------------------------------
1 |2 |1
----------------------------------
2 |1 |1
----------------------------------
3 |1 |2
----------------------------------
원하는 결과가
----------------------------------
Col1 |Col2 |Col3
----------------------------------
Hey |Wesley |Tompson
----------------------------------
Test |Random |Tompson
----------------------------------
George |Random |Oooo
----------------------------------
그래서 당신이
SELECT col1.TextValue,col2.TextValue,col3.TextValue
FROM Table2 t2,
(SELECT * FROM Table1 WHERE FieldID = 'Col1') col1,
(SELECT * FROM Table1 WHERE FieldID = 'Col2') col2,
(SELECT * FROM Table1 WHERE FieldID = 'Col3') col3
WHERE t2.col1 = col1.EnumeratedValue and t2.col2 = col2.EnumeratedValue and t2.col3 = col3.EnumeratedValue
문제 같은 것을 쓸 수있는보기 것이다 것은 그가 우리의 실제 테이블 ~ 테이블 당이 열 (20) . 이 코드를 작성하는 더 간단한 방법을 찾고 싶습니다. 내가 만드는 각보기에 대해 20 개의 조인을 하드 코딩하지 않으려합니다. 대안이 있는지 알려주세요.
나는 그것을 얻지 않는다. 나는 조인이 무엇을하는지 보았습니다.하지만 전혀 이해가되지 않습니다. 좀 더 명확히하십시오. 그리고 t2.col1 (숫자)과 col1.FieldId (텍스트)를 비교할 수 없습니다. 결과가 없습니다. 원하는 결과물을 볼 때 당신이하고 싶은 것을 이해하지만 그 이유를 이해하지 못합니다. – Juru
주미 죄송합니다. 내 논리가 잘못되었습니다. 쿼리를 업데이트했습니다. 희망은 모든 것을 하드 코딩 할 필요가 없다는 것입니다 (SELECT * FROM 표 1 ...). –
@ 주니어 우리 테이블에 스토리지를 저장하기 위해 enum 테이블을 사용하고 있습니다. 잉여 문자열은 우리가 감당할 수없는 많은 공간을 낭비 할 것이므로 나머지 테이블에서는 EnumeratedTypes (ints)를 사용합니다. –