2010-10-15 24 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片段中,替换?(按照出现)。