2013-12-20 2 views
0

두 테이블의 두 필드에있는 데이터를보고 데이터를 반환 할 것인지를 확인하는 쿼리를 작성하려고합니다. 그것이 일치하지 않는 경우 단순히 "No viewingings"이라는 텍스트를 반환하기를 원합니다.MS Access IFF를 사용하여 값을 비교하는 쿼리

첫 번째 테이블 "속성"의 필드와 "보기"데이터를 비교하려는 두 번째 필드의 필드가있는 액세스 데이터베이스에서이 쿼리를 생성했습니다. 빌드 도구를 사용하여 다음 표현식을 작성했지만 쿼리를 실행하려고 할 때마다이 오류 메시지가 표시 될 때마다 작동하지 않게되었습니다. "쿼리에 'Property Viewed'표현식이 포함되지 않았습니다. 집계 함수. "

totalViewings: IIf([Viewings]![Property Viewed]=[Property]![ID],Count([Viewings]![Property Viewed]=[Property]![ID]),"No Viewings") 

이 오류를 극복하는 방법에 대한 도움은 매우 감사하겠습니다.

감사

답변

0

나는이 같은 일을 제안 :

1)이 자신을 개발하고 뭔가 가정, 데이터 구조는 첫 번째 순서에있는 모든 있는지 확인합니다. (ViewingID -

속성 - - PropertyID 등 (일련 번호, 기본 키), HouseNumberOrName, Street,

Viewings 나는 상대적으로 코드 적대적 식별자를 싫어하기 때문에, 그래서 같은 테이블이있을 것이다 일련 번호, 기본 키), PropertyID (수/긴 정수), ViewingDate 등 관계

Properties.PropertyID는 다음 일대 재에 Viewings.PropertyID를 가리 키도록 설정 될 것이다,보기 준비.

2) 귀하의 실제 쿼리는 두 가지로 나뉩니다. 첫 번째는 데이터를 컴파일하고 두 번째는 디스플레이 용으로 포맷합니다. 첫 번째는 ViewingCounts로 저장이 같이 갈 ...

SELECT Properties.PropertyID, Count(Viewings.PropertyID) As ViewingCount 
FROM Properties LEFT JOIN Viewings ON Properties.PropertyID = Viewings.PropertyID 
GROUP BY Properties.PropertyID; 

...이 같은 두 번째, ViewingCountsForDisplay로 저장합니다 :

SELECT Properties.*, IIf(ViewingCount = 0, 'No viewings', ViewingCount) AS Viewings 
FROM Properties INNER JOIN ViewingCounts ON Properties.PropertyID = ViewingCounts.PropertyID 
ORDER BY Properties.PropertyID; 
+0

좋은 솔루션입니다, 감사합니다. LEFT JOIN 'Propoerties.Proporty.ID'는 'Viewings.ViewingID'와 같아야합니다. 구현 했으므로 훌륭하게 작동합니다. – al3

+0

@ user3124052 - 감사합니다. 오타를 바로 잡았습니다. –