Rob Biedenharn wrote: > On Jun 2, 2009, at 10:17 AM, Jeff Schwab wrote: >> Jay Covington wrote: >>> Hello, >>> >>> I have a table called "Itemlist" and have multiple columns in it >>> such as >>> "item1", "item2", "item3", "item4". These columns often have >>> repetitious >>> data between them and I'm trying to count it. The only working code I >>> have so far is: >>> >>> statcount = Itemlist.count(:all, :condition => {:item1 => "Apple"}) >>> >>> And this works fine for retrieving the count for "Apple" in all the >>> :item1 fields, but I need to retrieve the count for "Apple" from the >>> columns :item2, :item3, and :item4 as well as :item1. Any ideas? >>> Thanks! >> item_ids = 1..4 >> apple_query = item_ids.map {|id| "item#{id} = 'Apple'" }.join(" OR ") >> apple_count = ItemList.count(:all, :conditions => apple_query) > > > Yuck! Can you change the schema? Granted, these names are lame, but > I'm guess that you have better information from which to confer better > ones: > > ItemList > id: integer > list: string > > ItemListItem > id: integer > item_list_id: integer > item: string > > (and add an index on item_list_id) > > > class ItemList < ActiveRecord::Base > has_many :item_list_items > end > > class ItemListItem < ActiveRecord::Base > belongs_to :item_list > end > > statcount = ItemListItem.count(:conditions => { :item => 'Apple' })
That looks like a fundamentally different operation, counting apples, rather than lists that contain apples. Won't any list containing multiple apples be over-counted? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---