php - 跟踪 mysql 的长期变化——用于形成折线图等

标签 php mysql

我有一个为我举办的比赛管理的表格,目前它有 4 列。

ID
Name
Tag
Rating

实际上,我希望尽可能长时间地跟踪标签的更改(及其更改的日期),以便为我的用户提供他们在比赛中的表现的折线图。

我尝试四处寻找一种方法,但以我有限的知识,我能找到的大多数方法是仅保存最后一次更改的方法,或者在进行更改时保存整个表的方法。就我而言,更改是针对单个用户(行)的,因此需要单独跟踪他们。

任何帮助将不胜感激。

编辑:

样本

id | name        | tag   |  rating 
-------------------------
 1 | Khar        | 5     | 800
 2 | SantaCruz   | 3     | 850
 3 | Sion        | 2     | 900
 4 | VT          | 1     | 758
 5 | newFort     | 4     | 535
 6 | Bandra      | 6     | 483
 7 | Worli       | 10    | 888
 8 | Sanpada     | 11    | 999
 9 | Joe         | 9     | 779
10 | Sally       | 15    | 888
11 | Elphiston   | 17    | 525
12 | Currey Road | 31    | 879

该标签实际上是我想要长期跟踪的排名。

当谈到想要的结果时,我不确定什么是可能的。实际上,我希望能够为每个人创建一个折线图(y 轴:标签,x 轴:日期),因此我认为另一个跟踪所有更改及其日期的表格是理想的。

最佳答案

您可以将计算出的标签值存储在单独的表ttbl中(您永远不会更改任何值,而是始终将它们插入那里!):

tid  |  uid |  tag | changed
------------------------------------------
  1  |    1 |   5  | '2017-09-24T15:34:23'
  2  |    1 |   8  | '2017-09-24T15:36:23'
  3  |    2 |   3  | '2017-09-24T15:38:23'
  4  |    3 |   2  | '2017-09-24T15:40:23'
  5  |    4 |   1  | '2017-09-24T16:34:23'
  6  |    5 |   4  | '2017-09-24T16:44:23'
  7  |    1 |   5  | '2017-09-24T18:14:23'
  8  |    6 |   6  | '2017-09-24T18:24:23'
  9  |    1 |   9  | '2017-09-24T18:34:23'
 10  |    7 |   10 | '2017-09-24T18:44:23'
 11  |    1 |   5  | '2017-09-25T15:31:23'
 12  |    8 |   11 | '2017-09-25T15:32:23'
 13  |    9 |   9  | '2017-09-25T15:33:23'
 14  |   10 |   15 | '2017-09-25T15:34:23'
 15  |   11 |   17 | '2017-09-25T15:35:23'
 16  |   12 |   31 | '2017-09-25T15:36:23'

请注意,uid=1 的标记值会随着时间的推移从 5 变为 8、5、9,然后再次变回 5。

现在,通过特殊选择,您可以找出特定截止时间点的最新值,如下所示:

SELECT t.* FROM ttbl t 
INNER JOIN (SELECT uid i, max(changed) dt 
            FROM ttbl WHERE changed<'20170925'
            GROUP BY uid) u ON i=uid AND dt=changed;

这里的日期值'20170925'代表截止时间。请随意将其与当前评级值或其他内容一起加入到您的表格中。

您可以在这里找到一个小演示:http://rextester.com/GZNL52987

关于php - 跟踪 mysql 的长期变化——用于形成折线图等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389398/

相关文章:

php - or_like 在 codeIgniter 中不起作用

php - 在 WordPress 中的自定义选择语句中包含变量

php - 基于自定义字段值的不同 WooCommerce 电子邮件 header

c# - 尽管登录成功,ASP.NET 表单例份验证始终为 false

mysql - 如何根据另一列获取记录总和?

MySQL 触发器将列设置为 max + 1 不起作用

mysql - mysql 中的数据库名称似乎有效,但显示错误

php - Laravel 5 模型 orderBy?

php - 使用数据库(最好是mysql)在php和nodejs之间共享 session

mysql 数据读取器