集計を使用してビューの結果をカウントする[終了]


30

(プログラムではなく)集計を使用して、ビュー内の結果をカウント(たとえば、コンテンツタイプxのノードをカウント)できますか?


3
確かに、集約を使用してから、「ノードID」フィールドに「カウント」を選択します。
-uwe

1
drupal.stackexchange.com/questions/15871/count-of-nodes-by-typeには、すぐに使用できるビューのエクスポートを含む、同一のQ&Aがあります。
marcvangend

回答:


42

はい、そのまま使用できるビュー3で可能です。
この考え方は、SQL集計と同じです。例を見てみましょう:

  1. ビューを編集して、ビューの集計を有効にします。
    ビューの集約を有効にする

  2. デフォルトのソート基準を削除します。

  3. 「コンテンツ:タイプ」および「コンテンツ:ニッド」フィールドを追加します。コンテンツ:ニッドに ここに画像の説明を入力してください
    COUNT関数を選択します: ここに画像の説明を入力してください

何が起こるかを確認するには、グローバルビュー設定ページで[SQLクエリを表示]チェックボックスをオンにします。

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

したがって、node_typeでノードをグループ化し、このグループのカウントを計算しています。


1
数時間立ち往生していたので、あなたの投稿を読んだ後、そこにデフォルトのソートがあることに気付きました。ありがとう@kalabro
saadlulu

2
では、カウントはどのように利用可能になりますか?トークン変数であり、どのように表示できますか?
therobyouknow

もちろん、あなたの返事は正しいです。ただし、エンティティ参照および集計との関係を使用すると、スタックします。ブロックを作成する場合は正常に機能しますが、ページを作成する場合は機能しません。奇妙なもの。
アーブギムタム

10

元の質問には、カウント値で何をしようとているかは記載されていませんが、ここでは素晴らしい回答です。おそらくあなたはそれを表示したいですか?

もしそうなら、ここに別の解決策があります:

ビューが既にコンテンツタイプのアイテムでフィルタリングするように設定されていると仮定すると、ビューにヘッダーを追加し、[グローバル:結果の概要]オプションを選択して、テキスト領域にあるトークン変数を使用できます。


明確にするために、これはkalabroが提供する優れたソリューションを拡張して、カウントを表示します。
therobyouknow

-2

誰かがこれに出くわした場合に備えて。

Views Date Format SQLを使用して、日付を粒度にフォーマットしました。

Views Date Format SQLモジュールでは、SQLを使用して日付フィールドをフォーマットできます。これにより、選択した粒度を使用した日付フィールドのグループ集約が可能になります。

コア機能は、render()から日付フォーマットを削除し、query()に入れることです。つまり、PHPのformat_dateではなくSQLのDATE_FORMATを使用して日付値をフォーマットします。

これは、ノードの「作成済み」および「変更済み」の日付フィールドに新しいデフォルトハンドラーを割り当てることで実現されます。このハンドラーは、views_handler_field_dateのビューのビルドを拡張およびオーバーライドします。

箱から出してすぐに動作-簡単!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.