php - 每个人显示一个按日期排序的结果

标签 php mysql sql phpmyadmin

在我的本地网站上,人们可以通过测试,管理员可以看到结果。 之前,所有的结果都显示出来了,但是很难看,所以我决定只显示最后一个通过测试的人。但我被卡住了,因为我只能显示每个人一个结果,但我不能按日期对他进行排序:(

SELECT * FROM resultateval join personne using (id) group by id

这是为每个人显示一个结果的查询,这是表格。

enter image description here

它应该显示

654321 / 08-06-2018 / 12 : 02 / 5 / 8 / 1
 A256589 / 05-06-2018 /13 : 05 / 7 / 10 / 2

谢谢!

最佳答案

因为您分别存储了时间和日期,所以执行此操作所需的查询相对难看。我们可以通过使用 ADDTIMEheuereeval 时间添加到 dateeval 日期来形成一个有效的时间戳。然后,这只是一个基本的聚合连接查询:

SELECT t1.*
FROM resultateval t1
INNER JOIN
(
    SELECT id, MAX(ADDTIME(dateeval, heureeval)) AS max_date
    FROM resultateval
    GROUP BY id
) t2
    ON t1.id = t2.id AND
       ADDTIME(t1.dateeval, t1.heureeval) = t2.max_date;

enter image description here

Demo

为了将来引用,请避免单独存储日期和时间,除非有充分的理由这样做(我在这里没有看到)。

编辑:正如我担心的那样,根据评论,您似乎已将日期存储为文本。您可以使用以下函数调用根据日期文本生成日期:

STR_TO_DATE(dateeval, '%d-%m-%Y')

只需将我的原始查询 dateeval 替换为上述对 STR_TO_DATE 的调用,它应该仍然有效。

关于php - 每个人显示一个按日期排序的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810401/

相关文章:

mysql - (Mysql - 计算不同列中表中的值

sql - 在 SQL 中使用子查询返回每个派生表必须有自己的别名错误?

sql - 如何在sql中搜索小时/分钟?

javascript - 使用 PHP 为目录中的所有 JavaScript 文件递归生成脚本标签

php - 如何使用 PHP 加密 HTML 源代码输出

php - Laravel undefined variable $articles

java - 访问构造函数中未包含的方法

java - 从 mysql 数据库中的 N 行中选择相同的值

sql - 在 Go Lang 中连接到 SQL Server 2014

php - 如何使用 cakephp 1.3 上传文件