2013-12-20 87 views
0

我想建立一個查詢,將查看兩個不同表中的兩個字段中的數據,並檢查數據是否相同,如果是我希望它返回它匹配的次數,如果不是,我只是想讓它返回文字說「無視」。MS Access查詢使用IFF來比較值

我已經擁有從第一臺「財產」,第二場我希望它的數據與「收看」比較場我訪問數據庫構建此查詢。我使用構建工具構建了以下表達式,但是我堅持讓它工作,因爲每次在嘗試運行查詢時都會收到此錯誤消息:「您的查詢不包含指定的表達式'Property Viewed'作爲一個集合函數「。

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

任何幫助如何克服這個錯誤將不勝感激。

感謝

回答

0

我建議做這樣的事情:

1)假設這是你正在開發自己的東西,請確保您的數據結構是一切爲了第一。因爲我不喜歡比較碼敵對標識符,我有表,因爲這樣 -

屬性 - PropertyID(自動編號,主鍵),HouseNumberOrNameStreet

收看 - ViewingID(自動編號,主鍵),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

這是一個很好的解決方案,謝謝。您在第一個查詢though-在LEFT JOIN「Propoerties.Proporty.ID」做了一個微小的誤差應等於「Viewings.ViewingID」我實現了它和它的偉大工程! – al3

+0

@ user3124052 - 謝謝,我現在糾正了錯字。 –