Rêquete SQL: nombre d'occurences sur 2 tables
Résolu
jonnefoy
-
jonnefoy -
jonnefoy -
Bonjour,
Voici mes 2 tables:
Je voudrais avoir la liste des tags de la table TAGS classer par le nombre d'occurrences de id_tag dans la table TAGS_RELATIONS.
J'ai tenté :
Mais comme vous le devinez (sinon je poserai pas la question :) ) cela ne fonctionne pas.
Si vous avez une idée je vous en remercie par avance.
Bonne journée !
Voici mes 2 tables:
|tags |-id (primary) |-value |-date_ajout
|tags_relation |-id_tag (primary) |-id_news (primary)
Je voudrais avoir la liste des tags de la table TAGS classer par le nombre d'occurrences de id_tag dans la table TAGS_RELATIONS.
J'ai tenté :
SELECT t.*, r.id_tag, COUNT(r.id_tag) as tag_count FROM tags t, tags_relations r WHERE t.id = r.id_tag ORDER BY 'tag_count' desc
Mais comme vous le devinez (sinon je poserai pas la question :) ) cela ne fonctionne pas.
Si vous avez une idée je vous en remercie par avance.
Bonne journée !
A voir également:
- Sql compter le nombre d'occurence d'une valeur
- Nombre de jours entre deux dates excel - Guide
- Compter le nombre de oui dans une colonne excel ✓ - Forum Excel
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? - Forum VB / VBA
- Ascii nombre de caractères - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
1 réponse
Bonjour,
Il faut utiliser la clause GROUP BY
SELECT t.id, t.value, count(*) as tag_count
FROM tags t
LEFT OUTER JOIN tags_relations r ON t.id = r.id_tag
GROUP BY t.id, t.value
Il y a quelques nuances aussi qui dépendront de ton SGBD, donc si ça ne marche pas dis-nous avec lequel tu travailles.
Xavier
PS : Il y a un forum « Bases de données » qui est plus adapté à ce genre de question :)
Il faut utiliser la clause GROUP BY
SELECT t.id, t.value, count(*) as tag_count
FROM tags t
LEFT OUTER JOIN tags_relations r ON t.id = r.id_tag
GROUP BY t.id, t.value
Il y a quelques nuances aussi qui dépendront de ton SGBD, donc si ça ne marche pas dis-nous avec lequel tu travailles.
Xavier
PS : Il y a un forum « Bases de données » qui est plus adapté à ce genre de question :)
Merci beaucoup Xavier !
Désolé d'avoir posté dans la mauvaise catégorie.
Pour info:
Cette requête est utilisé sous MySQL
La requête finale est :
version Mysql :
SELECT 't'.'id', 't'.'value', count(*) as tag_count FROM ('tags' t) LEFT OUTER JOIN 'tags_relations' r ON 't'.'id' = 'r'.'id_tag' GROUP BY 't'.'id', 't'.'value' ORDER BY 'tag_count' descVersion Active Record (pour codeIgniter) :
$this->db->select('t.id, t.value, count(*) as tag_count') ->from('tags t') ->join('tags_relations r', 't.id = r.id_tag', 'left outer') ->group_by('t.id, t.value') ->order_by('tag_count', 'desc') ->get() ->result();Bonne journée !
et encore merci !