2010-08-12 8 views

Répondre

4

Parce que la table n'est pas normalisée, vous devrez aplatir d'abord:

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 

... avant de pouvoir les compter:

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 
+0

wow ... je n » Je pense que ce serait si compliqué. content je l'ai demandé! – doug

+0

Est-ce que union change réellement quelque chose dans ma base de données? – doug

+0

mmm il n'y a pas TABLEAU TABLEAU b TABLE c TABLE d TABLE e, ou suis-je incapable de comprendre ce qui se passe ici – doug