mysql - порядок по частоте с несколькими столбцами - PullRequest
1 голос
/ 12 августа 2010

У меня есть таблица с 5 столбцами:

  • тег 1
  • тег 2
  • тег 3
  • тег 4
  • tag 5

Если я хочу показать результаты, упорядоченные по популярности (частоте) этих тегов, какой тип запроса я бы использовал?

1 Ответ

4 голосов
/ 12 августа 2010

Поскольку таблица не нормализована, вам придется сначала сгладить ее:

SELECT a.column, a.tag1 AS tag
  FROM TABLE a
UNION ALL
SELECT b.column, b.tag2
  FROM TABLE b
UNION ALL
SELECT c.column, c.tag3
  FROM TABLE c      
UNION ALL
SELECT d.column, d.tag4
  FROM TABLE d
UNION ALL
SELECT e.column, e.tag5
  FROM TABLE e

... прежде чем вы сможете их посчитать:

SELECT t.tag, COUNT(*) tag_popularity
  FROM (SELECT a.column, a.tag1 AS tag
          FROM TABLE a
        UNION ALL
        SELECT b.column, b.tag2
          FROM TABLE b
        UNION ALL
        SELECT c.column, c.tag3
          FROM TABLE c      
        UNION ALL
        SELECT d.column, d.tag4
          FROM TABLE d
        UNION ALL
        SELECT e.column, e.tag5
          FROM TABLE e) x
GROUP BY x.tag
ORDER BY tag_popularity DESC
...