-1

我正在制作一个聊天机器人,人们可以在其中在一个 android 游戏中发送他的报告,所以我创建了一个 php 页面,您可以在其中查看基于 mysql 查询的当天报告。但我无法创建正确的查询。这是我尝试过的:

select
    id, nickname, fecha, bestia1, bestia2, bestia3, bestia4, bestia5
from
    reporte
where
    fecha > CURRENT_DATE()
group by
    nickname DESC

如您所见,我的表格“reporte”保存了一个角色发送的信息,但一个角色每天可以发送许多报告,所以我只想显示每个名称的最新报告。

我需要按昵称分组,按日期排序,并获取每个昵称的最新报告,但我有问题。我看过很多类似的帖子,但仍然无法弄清楚我必须做什么。我需要一些帮助,谢谢!

我的实际代码 是按日期从订单中选择的。但我想显示最新的每个昵称

4

2 回答 2

1

首先,您需要查询表reporte以获取每个昵称的最新注册的fecha,如下所示:

西班牙语翻译:

Primero, debes 顾问 la tabla reporte para obtener la fecha通讯员 al último registro de cada 昵称:

SELECT nickname, MAX(fecha)
FROM reporte
GROUP BY nickname

现在,我将向您展示如何加入之前的查询,以获取与每个昵称关联的最新报告相关的其余数据:

西班牙语翻译:

Ahora, te mostraré cómo realizar un join con esta Consulta previa para obtener el resto de los datos relacionados con el último informe de cada昵称

SELECT
    r1.id,
    r1.nickname,
    r1.fecha,
    r1.bestia1,
    r1.bestia2,
    r1.bestia3,
    r1.bestia4,
    r1.bestia5
FROM
    reporte AS r1
INNER JOIN
    (
      SELECT nickname, MAX(fecha) AS max_date
      FROM reporte
      GROUP BY nickname
      HAVING MAX(fecha) >= CURRENT_DATE()
    ) AS latests_reports ON latests_reports.nickname = r1.nickname AND latests_reports.max_date = r1.fecha
于 2018-10-05T03:30:48.350 回答
0

您错过了order by部分查询。

假设其余的都是正确的,这是您的查询:

select id,nickname, fecha,bestia1,bestia2,bestia3,bestia4,bestia5 from reporte WHERE fecha>CURRENT_DATE() group by nickname order by id DESC

由于有一个分组,您可能需要更改idmax(id)

于 2018-10-05T02:24:06.430 回答