# File lib/taggable.rb, line 327
        def tags_count(options = {})
          options = {:order => 'count DESC'}.merge(options)
          
          o, o_pk, o_fk, t, tn, t_pk, t_fk, jt = set_locals_for_sql
          sql = "SELECT #{t}.#{t_pk} AS id, #{t}.#{tn} 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}.#{t_pk},#{t}.#{tn}"
          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)
          if !options[:raw]
            count = result.inject({}) { |hsh, row| hsh[row["#{tn}"]] = row['count'].to_i; hsh }
            if options[:sort_list] && options[:sort_list].is_a?(Proc)
                count = options[:sort_list].call(count.keys.collect{|key| [key,count[key]]})
            end
          end
                    
          count || result
        end