OSDN Git Service

[feature]魔法領域の統計取得
authorHabu <habu@users.sourceforge.jp>
Tue, 27 Mar 2018 03:55:06 +0000 (12:55 +0900)
committerHabu <habu@users.sourceforge.jp>
Tue, 27 Mar 2018 11:23:34 +0000 (20:23 +0900)
score/db_common.inc

index e392732..79d729a 100644 (file)
@@ -326,6 +326,32 @@ EOM
                 );
             }
 
+            foreach (range(1, 2) as $seq) {
+                $table_name = "realm{$seq}_statistics";
+                $this->dbh->exec("DROP TABLE IF EXISTS ".$table_name);
+                $stmt = $this->dbh->query(
+                    <<<EOM
+CREATE TABLE $table_name AS
+SELECT
+  class_id, class_name,
+  realm_id, realm_name,
+  count(*) AS total_count,
+  count(sex=1 OR NULL) AS male_count,
+  count(sex=0 OR NULL) AS female_count,
+  count(winner=1 OR NULL) AS winner_count,
+  avg(score) AS average_score,
+  max(score) AS max_score
+FROM score_realms
+NATURAL INNER JOIN scores
+NATURAL INNER JOIN classes
+NATURAL INNER JOIN realms
+WHERE realm_seq={$seq}
+GROUP BY class_id, realm_id
+ORDER BY class_id, total_count DESC
+EOM
+                );
+            }
+
             return TRUE;
         } catch (PDOException $e) {
             return FALSE;
@@ -353,6 +379,10 @@ EOM
             $stmt = $this->dbh->query("SELECT ${kind[0]}_id AS id, ${kind[0]}_name AS name, * FROM ${kind[0]}_statistics NATURAL JOIN ${kind[1]} ORDER BY ${sort_key_column} DESC");
             $stat[$kind[0]] = $stmt->fetchAll(PDO::FETCH_ASSOC);
         }
+        foreach (['realm1', 'realm2'] as $realm) {
+            $stmt = $this->dbh->query("SELECT * FROM {$realm}_statistics;");
+            $stat[$realm] = $stmt->fetchAll(PDO::FETCH_ASSOC);
+        }
         $this->dbh->commit();
 
         return $stat;