# File lib/taggable.rb, line 264
        def tags_count(options = {})
          options = {:order => 'count DESC'}.merge(options)
          
          o, o_pk, o_fk, t, t_pk, t_fk, jt = set_locals_for_sql
          sql = "SELECT #{t}.#{t_pk} AS id, #{t}.name AS name, COUNT(*) AS count FROM #{jt}, #{o}, #{t} WHERE #{jt}.#{t_fk} = #{t}.#{t_pk} 
                AND #{jt}.#{o_fk} = #{o}.#{o_pk}"
          sql << " AND #{sanitize_sql(options[:conditions])}" if options[:conditions]
          sql << " GROUP BY #{t}.name"
          sql << " HAVING count #{options[:count]} " if options[:count]
          sql << " ORDER BY #{options[:order]} " if options[:order]
          add_limit!(sql, options)
          result = connection.select_all(sql)
          count = result.inject({}) { |hsh, row| hsh[row['name']] = row['count'].to_i; hsh } unless options[:raw]
                    
          count || result
        end