# File lib/taggable.rb, line 230
        def find_tagged_with(options = {}) 
          options = { :separator => ' ' }.merge(options)
          
          tag_names = ActiveRecord::Acts::Taggable.split_tag_names(options[:any] || options[:all], options[:separator])
          raise "No tags were passed to :any or :all options" if tag_names.empty?

          o, o_pk, o_fk, t, t_pk, t_fk, jt = set_locals_for_sql
          sql = "SELECT #{o}.* FROM #{jt}, #{o}, #{t} WHERE #{jt}.#{t_fk} = #{t}.#{t_pk} 
                AND (#{t}.name = '#{tag_names.join("' OR #{t}.name='")}')
                AND #{o}.#{o_pk} = #{jt}.#{o_fk}"
          sql << " AND #{sanitize_sql(options[:conditions])}" if options[:conditions]
          sql << " GROUP BY #{o}.#{o_pk}"
          sql << " HAVING COUNT(#{o}.#{o_pk}) = #{tag_names.length}" if options[:all]              
          sql << " ORDER BY #{options[:order]} " if options[:order]
          add_limit!(sql, options)
          
          find_by_sql(sql)
        end