1

私は次のようなMySQLデータベースに取り組んでいます:

 ----------------------------------------------
 | ID |  Time  |    Typeop     |   Operator   |
 ----------------------------------------------
 |  1 |  10:01 |  withdrawal   |     John     |
 |  2 |  10:01 |  deposit      |     Mike     |
 |  3 |  10:01 |  deposit      |     Andrew   |
 |  4 |  10:02 |  check        |     John     |
 |  5 |  10:02 |  withdrawal   |     Simon    |
 |  6 |  10:03 |  withdrawal   |     Dorothy  |

データベースは、操作中に各「操作者」によって入力され、仮説的な銀行操作データベースを示します。

私の質問は、mysql クエリを整理して、過去 3 分間の各オペレーターのアクティビティを表示するにはどうすればよいですか? この例の場合、クエリは以下を示す必要があります。

 -------------------------
 | Operator |   Typeop   |
 -------------------------
 | Dorothy  | withdrawal |
 |  Simon   | withdrawal |
 |   John   | check      |
 |  Andrew  | deposit    |
 |  Mike    | deposit    |
 -------------------------

John は過去 3 分間に 2 つの操作を行っていますが、それは最後の 1 つだけと見なされていることに注意してください。このテーブルのレコードは、3 分のタイムスロット内で最後の操作から古い操作に並べられます。

各オペレーターの名前の横にある写真も見せてもらえますか? (john.jpg、Simon.jpg...) クエリから生成された php テーブルに?

4

3 に答える 3

3

このクエリはそれを行います。

SELECT * 
FROM   (SELECT Operator, 
               Typeop 
        FROM   tbl 
        WHERE  `Time` > ( Now() - INTERVAL 3 minute ) 
        ORDER  BY `Time` DESC) AS `a` 
GROUP  BY `Operator` 
于 2012-11-08T11:38:39.490 に答える
0

私はこれをテストしていませんが、このようなものも機能する可能性があります。

SELECT * FROM tableName WHERE Time BETWEEN (CURTIME() AND ADDTIME(CURTIME(), '00:03:00'))
于 2012-11-08T11:45:03.113 に答える
0

これを使って...

Select Operator,Typeop from YourTableName where Time > date_sub(now(), interval 3 minute)  ORDER BY `Time` desc group by Operator;
于 2012-11-08T11:40:37.460 に答える