Microsoft Access 2010에서 도움이되는 도움이 필요합니다. 모든 ID와 영문 이름을 가진 마스터 테이블과 ID 및 이름이있는 7 개의 하위 테이블이 다른 언어로있는 상황이 있습니다. 주의해야 할 점은 7 개의 서브 테이블의 합으로부터 총 항목 수가 마스터 테이블과 일치하지 않을 수 있다는 것입니다. 그것은 더 적을 수도 있습니다.MS Access 2010에서 Nz()를 사용하여 중첩 제한?
ID를 표시하고 의 이름을 외국어로 표시하려고하거나 해당 이름이없는 경우 영어 이름을 표시하려고합니다.
처음에는 COALESCE를 사용하고 싶었지만 MS Access에서 지원하지 않는다는 것을 깨달았습니다.
나는 두 개의 서로 다른 접근 방식을 촬영했습니다 - 첫 번째 내부 조인되는 :
M.SID, A.ForeignName
FROM Master M INNER JOIN Class_A A ON M.SID = A.SID
UNION M.SID, A.ForeignName
FROM Master M INNER JOIN Class_B B ON M.SID = B.SID
UNION M.SID, A.ForeignName
FROM Master M INNER JOIN Class_C C ON M.SID = C.SID
...
하지만 마스터의 모든 기록을 캡처 할 수 없습니다 및 중 하나에 존재하지 않는 모든 레코드를 선택하는 방법을 생각할 수 없다 클래스 A, B, C 등 그래서 내가 대신)의 Nz를 (사용하려고하기로 결정
SELECT M.SID,
Nz(
(SELECT ForeignName FROM Class_A A WHERE M.SID = A.SID),
Nz(
(SELECT ForeignName FROM Class_B B WHERE M.SID = B.SID),
Nz(
(SELECT ForeignName FROM Class_C C WHERE M.SID = C.SID),
EnglishName
)
)
)
FROM Master M
그것은 클래스 B에 너무 오래 나는 중지로 완벽하게 작동하지만, 넘어가는 오류가 발생합니다
을At most one record can be returned by this subquery.
또한 SWITCH를 사용하려고했지만 서브 쿼리를 지원하지 않는 것 같습니다.
기대하는 값으로 개별적으로 쿼리를 실행하는 경우 둘 이상의 값을 반환하는 쿼리가 있습니까? 'Nz'는 반환 된'ForeignName'이 단지 하나의 행이나 NULL을 반환하는 경우에만 작동합니다. – Ash
'IsNull'과 함께 중첩 된'IIF'를 사용할 수 없습니까? @AshwinNair와 마찬가지로, 표 C에 중복 값이 있거나 Nz가 "C"subselect를 가져 와서 "B"에 추가합니다. – Jeroen