查询并不完美,无法获得所需的结果。

时间:2013-07-25 09:51:25

标签: php mysql

MYTABLE-:根据点击的页面( x,y,z ),每隔10秒将一些数据插入此表中

page | time | string|  timestamp

    x |  0   | load | 2013-07-24 18:45:02
    x | 10   | 0    | 2013-07-24 18:45:12
    x | 20   | 0    | 2013-07-24 18:45:22
    y |  0   | load | 2013-07-24 18:45:25
    x | 30   | 0    | 2013-07-24 18:45:32
    y | 10   | 0    | 2013-07-24 18:45:35
    z |  0   | load | 2013-07-24 18:45:40
    x | 40   | 0    | 2013-07-24 18:45:42
    y | 20   | 0    | 2013-07-24 18:45:45
    z | 10   | 0    | 2013-07-24 18:45:50
    x | 50   | 0    | 2013-07-24 18:45:52
    y | 30   | 0    | 2013-07-24 18:45:55
    x | 0    | load | 2013-07-24 18:45:58
    z | 20   | 0    | 2013-07-24 18:46:00
    x | 10   | 0    | 2013-07-24 18:46:08
    y | 40   | 0    | 2013-07-24 18:46:05

这是我试图通过查询返回的内容。

x,50      //x page has max time of 50 sec
y,40      //y page has max time of 40 sec
z,20
x,10      //if I do groupby,i dont get this parameter.

* 注意: *返回的行数与no完全相同。字符串字段中的加载

此处,load表示已加载页面

我在做什么 - :

$query="SELECT field,MAX(time)" from table MYTABLE where "this is where i get stuck"

更新: 我的页面上有三个链接.. X,Y,Z 。 我试图通过每10秒插入一些值来跟踪用户活动。基于这些数据,我将绘制图表。 用户行为将是随机的(例如从x到y到x到z到x)。因此我需要映射这些更改。在加载时,插入时间== 0并插入字符串字段中的加载。

我清楚吗?

2 个答案:

答案 0 :(得分:0)

添加一个列很容易,比方说GroupId (int)表示每个新加载为新组,并将GroupId加1。

示例:

GroupId | page | time | string|  timestamp

1|    x |  0   | load | 2013-07-24 18:45:02
1|    x | 10   | 0    | 2013-07-24 18:45:12
1|    x | 20   | 0    | 2013-07-24 18:45:22
2|    y |  0   | load | 2013-07-24 18:45:25
2|    x | 30   | 0    | 2013-07-24 18:45:32
2|    y | 10   | 0    | 2013-07-24 18:45:35
3|    z |  0   | load | 2013-07-24 18:45:40
3|    x | 40   | 0    | 2013-07-24 18:45:42
3|    y | 20   | 0    | 2013-07-24 18:45:45
3|    z | 10   | 0    | 2013-07-24 18:45:50
3|    x | 50   | 0    | 2013-07-24 18:45:52
3|    y | 30   | 0    | 2013-07-24 18:45:55
4|    x | 0    | load | 2013-07-24 18:45:58
4|    z | 20   | 0    | 2013-07-24 18:46:00
4|    x | 10   | 0    | 2013-07-24 18:46:08
4|    y | 40   | 0    | 2013-07-24 18:46:05

之后,你可以简单地写下这个:

SELECT 
   GroupId,
   field,
   MAX(page) 
FROM MYTABLE

答案 1 :(得分:0)

试试这个

    delimiter //
    CREATE PROCEDURE REProc()
    BEGIN
    WHILE time= 0  DO
    SELECT page,  MAX(time)  as time  FROM table1 ;
    END WHILE;
    END
    //