2009-09-17 4 views
1

Je pense que la réponse à ma question est plutôt simple, mais je ne peux pas la comprendre pour l'instant. J'ai expérimenté avec DISTINCT() et COUNT(), mais je n'ai pas réussi, même si je sais, que je l'ai fait d'une manière ou d'une autre. Donc:Requête SQL: obtention de l'ID de la balise et du nombre d'occurrences de balises

J'ai trois tables: article, tag, et article_tag. Le dernier est simplement deux colonnes avec article_id et tag_id construisant une clé unique.

Maintenant, je veux une seule instruction SELECT qui me livre le tag_id et le nombre de fois qu'il apparaît dans la table article_tag. Quelque chose comme

| tag_id | count | 
+---------+---------+ 
| 1  | 14  | 
| 2  | 3  | 
| 3  | 34  | 
+---------+---------+ 

d'une requête comme:

SELECT tag_id, COUNT(something) AS count 
    FROM article_tag 

Quelqu'un pourrait-il me dire, comment je pourrais obtenir ce résultat? Je suppose que je devrais arrêter de codage quand il tend vers 0h00 ...

Répondre

4
SELECT tag_id, 
     COUNT(article_id) AS article_count 
    FROM article_tags 
GROUP BY tag_id 
+1

Apparemment, vous étiez le premier. Merci à vous tous pour les réponses! Comme je l'ai dit, je pense que j'arrêterai de coder vers minuit. – Boldewyn

3

Essayer: sélectionnez tag_id, count (article_id) du groupe article_tag par tag_id

3
select tag_id, count(*) from article_tag group by tag_id order by tag_id; 

Vous pouvez imbécile avec le order by ainsi. Pour voir quelles étiquettes ont le plus de références:

select tag_id, count(*) from article_tag group by tag_id order by count(*); 
Questions connexes