2010-10-15 73 views
1

我試圖找到一個數據庫在「計數」,或在軌「查找」功能

@genus_counts = Table.count(:all, :conditions=> {:col1 => params[:gm], :col2 => nil}, :without => {:col3 => nil}) 

的不是null元素它不承認「沒有」功能NOT NULL。我懷疑將它作爲數組值使用。

@genus_counts = Table.count(:all, :conditions=> {:col1 => params[:gm], :col3 != nil :col2 => nil}) 

它不識別「!=」運算符....請建議我並更正上面的語句。我懷疑將它作爲數組值使用。我不能將它作爲數組應用。請告訴我帶這個輸出到view.erb.html

- 與此致 Palani Kannan的建議。 ķ

回答

6

你應該這樣做(如之前回答的那樣)(在您的控制器內部):

@genus_count = Table.count(:all, :conditions => ['col3 is not null and col2 is null and col1 = ?', params[:gm]) 

然後@genus_count將包含你想要的計數。由於@genus_count是控制器的一個實例變量,你可以參考它的視圖內是這樣的:

The wanted count = <%= @genus_count %> 

希望這有助於!

0

http://guides.rubyonrails.org/active_record_querying.html#conditions

您可以使用類似於這種形式,而不是東西:

"orders_count = ? AND locked = ?", params[:orders], false 

所以你可以使用

" ... col3 IS NOT null ... " 
+0

'true'和'false'給出沒有錯誤的輸出。但是,@genus_counts不會生成html.erb的結果。可能存儲在$ genus_count ...那麼我怎麼能得到這個變量爲html.erb?請幫幫我。 – 2010-10-15 12:54:06

0

指定條件(如:conditions=> {:col1 => params[:gm], :col2 => nil})的散列格式只能用於指定條件,這些條件全部是=AND合併。

這是很好的適用時,讀這麼使用的格式,但是當你需要一個OR,或比=其他一個比較,你需要使用一個稍微不同的格式:

:conditions => ["col1 = ? AND col3 != ? AND col2 = ?", params[:gm], nil, nil]

這格式需要一個數組,其中第一個元素是一個sql片段,其餘參數是sql消毒(防止sql注入攻擊,並將nil轉換爲'NULL'等)並插入到sql片段中,替換?(按照出現)。