ダッシュボードの設定:クエリーの作成

索引に戻る

クエリエディタを使用すると、SQLクエリを編集および調整して、出力で使用されるデータを取得できます。

SQLを入力または貼り付けることができる単なるテキスト領域です。

デフォルトでは、SQLはMoodle self database(1)に適用されるか、このブロックのグローバル設定で設定されたアクセサリーデータベース(PostGreSQL)にアドレス指定することができます。

適切なものを書くには、Moodleデータベース構造(またはアクセサリDB)についてのより軽いまたは深い知識が必要です。このブロックが通常熟練したMoodle管理者によって設定されるべきであるのはこのためです。

Moodleクエリを書くために従うべきいくつかの重要な規則

  • 処理できるのはSELECTクエリだけです。
  • クエリはあらゆる種類のJOINを実行できます。
  • 複雑なUNIONまたはINTERSECTによっては、フィルタサブクエリ処理に混乱が生じる可能性があります。結果は保証されない場合があります。
  • すべての出力フィールドは、レンダラーで使用されている場合は「エイリアス」されている必要があります。
 SELECT
  fnとしての名
  lnとしての姓
  ログインとしてのuserame、
  ...

実際には、アロエ名はレンダラー設定でデータを参照するために使用されます。

  • テーブル名は、Moodleテーブルのプレフィックスを含めて記述する必要があります(例:ユーザーの場合はmdl_user)。
  • queryが一連の列に対して集約関数(GROUP BY)を使用する場合は、複合主キーを結果の最初のフィールドとして設定し、グループ化の各列部分を集約する必要があります(または結果配列への変換時に多くの結果行が失われます)。 。

例:

月ごとおよび市ごとのアクセス数を示すためにクエリを使用しましょう。

 SELECT
  市AS市、
  月(FROM_UNIXTIME(時間))月
  ASアクセス数(*)
  から
  mdl_log
  どこに
  action = 'ログイン'
  グループ化
  市、月

このクエリには2つの大きな問題があります。

  • 日付の月の部分には年の参照が含まれていません。結果はすべての年の毎年1月のすべてのアクセスを要約します。この最初の問題は次のように解決する必要があります。
月としてのDATE_FORMAT(FROM_UNIXTIME(time)、 "%Y-%m"))
  • 出力の見かけの主キーはcityです。したがって、結果の最後の月のデータのみが保持されます。この2番目の問題は、複合キーによって解決されます。
 CONCAT(city、 ''、DATE_FORMAT(FROM_UNIXTIME(time、 "%Y-%m")))AS pk

最初のクエリ列として追加されました。