我有大約500個網點。每個插座每天至少監視一次。我正在嘗試獲取每天都進行監控的網點列表。我有此刻的查詢問題Rails 3.2查詢 - .exists?
,任何幫助表示讚賞:
<% for outlet in @outlets %>
<% if Monitoring.exists?(:outlet_id => outlet.id, 'DATE(created_at) = ?', Date.today) %>
的@outlets是包含Outlet.all一個實例變量。
此查詢給我留下語法錯誤。什麼是正確的方法來做到這一點?我試圖檢查監控是否屬於Outlet,並且監控記錄是在今天創建的。
此外,我不完全確定此查詢的速度影響。一次最多可以在一個頁面上創建2000個網點(這是一個儀表板,因此它們顯示爲紅色或綠色點)。
任何幫助極大的讚賞。
謝謝,你是對的,我不能相信我錯過了。關於多次訪問數據庫的性能,您完全正確。我真的不知道'counts = Monitoring.where('date(created_at)=?',Date.today).count(:group =>:outlet_id)'是如何工作的,能否請你進一步解釋一下,看起來很有趣! – Ammar 2012-03-28 21:38:21
@Ammar:這個想法是爲今天的每個'outlet_id'計算所有的匹配,並且你可以在一個查詢中做到這一點(即在命中數據庫時)。結果將只有「存在?」將返回true的條目。 – 2012-03-28 22:16:09
我將如何使用'counts.has_key? outlet.id'我從來沒有遇到過這樣的事情,所以請原諒我稍微不清醒:P感謝迄今爲止的幫助! – Ammar 2012-03-28 22:47:08