Compter les résultats dans les vues en utilisant l'agrégation [fermé]

30

Est-il possible de compter les résultats (par exemple, compter les nœuds du type de contenu x) dans une vue, en utilisant l'agrégation (pas par programme)?

hpn
la source
3
Bien sûr, utilisez simplement l'agrégation, puis sélectionnez "count" pour votre champ "node id".
uwe
1
Il y a un Q&A identique sur drupal.stackexchange.com/questions/15871/count-of-nodes-by-type , y compris une exportation de vue prête à l'emploi.
marcvangend

Réponses:

42

Oui, c'est possible dans les vues 3 de la boîte.
L'idée est la même que dans les agrégations SQL. Voyons un exemple:

  1. Modifiez votre vue et activez les agrégations de vues:
    activer les agrégations de vues

  2. Supprimer les critères de tri par défaut.

  3. Ajoutez les champs "Contenu: Type" et "Contenu: Nid": entrez la description de l'image ici
    Sélectionnez la fonction COUNT pour Contenu: Nid: entrez la description de l'image ici

Pour voir ce qui se passe, activez la case à cocher «Afficher la requête SQL» sur la page des paramètres des vues globales.

SELECT node.type AS node_type, COUNT(node.nid) AS nid
FROM 
{node} node
WHERE (( (node.status = '1') ))
GROUP BY node_type
LIMIT 10 OFFSET 0

Donc, nous regroupons les nœuds par node_type et calculons le nombre de ces groupes.

Kalabro
la source
1
J'ai été coincé pendant quelques heures, puis après avoir lu votre message, j'ai réalisé que j'avais un tri par défaut. Merci @kalabro
saadlulu
2
Alors, comment le décompte est-il disponible - est-ce une variable symbolique et comment peut-il être affiché?
therobyouknow
Votre réponse est, bien sûr, correcte. Cependant, j'ai été bloqué lors de l'utilisation des relations avec les références d'entité et l'agrégation. Cela fonctionne bien si vous créez un bloc, mais pas si vous créez une page. Trucs bizarres.
Urb Gim Tam
10

Excellentes réponses ici, bien que votre question d'origine n'indique pas ce que vous allez faire avec la valeur de comptage. Vous voulez probablement l'afficher?

Si oui, voici une autre solution:

En supposant que votre vue est déjà configurée pour filtrer par éléments de type de contenu, vous pouvez également ajouter un en-tête dans la vue et choisir l'option "Global: Résumé des résultats" et utiliser les variables de jeton fournies dans la zone de texte.

therobyouknow
la source
Pour clarifier, cela étend la grande solution fournie par kalabro, pour afficher un décompte.
therobyouknow
-2

Juste au cas où quelqu'un tomberait dessus.

J'ai utilisé le format de date Vues SQL pour formater la date à la granularité.

Le module Vues Format Date SQL permet de formater les champs de date à l'aide de SQL. Cela permet l'agrégation de groupes pour les champs de date en utilisant la granularité choisie.

La fonctionnalité principale consiste à supprimer la mise en forme de la date de render () et à la placer dans query (). C'est-à-dire formater les valeurs de date en utilisant DATE_FORMAT de SQL plutôt que PHP format_date.

Pour ce faire, vous affectez un nouveau gestionnaire par défaut aux champs de date du nœud «créé» et «modifié». Ce gestionnaire étend et remplace la construction des vues dans views_handler_field_date.

Fonctionné dès la sortie de la boîte - aussi simple que!

Jeremy
la source