用最新的日期sql php选择行

时间:2013-01-24 18:56:09

标签: php mysql select

我想抓住一行包含最近日期的表格。我正在考虑我的代码并看到其他解决方案,我认为它们不适应我的问题。  这是我的代码。

$result = mysql_query("SELECT * FROM tema")
or die(mysql_error());

while($row = mysql_fetch_array( $result )){
   $id_tema= $row['ID_TEMA'];
    $result_info_mensajes = mysql_query("SELECT max(FECHA_MENSAJE) FROM mensaje WHERE ID_TEMA=$id_tema")
        or die(mysql_error());
    $row_mensaje = mysql_fetch_array($result_info_mensajes);
    if($row_mensaje){
       $fecha_ultimo = $row_mensaje['FECHA_MENSAJE'];
       $usuario_ultimo = $row_mensaje['ID_USUARIO'];
    }
}

这就是我需要的,包含最高日期的行收集用户和日期。

这是错误:

Notice: Undefined index: FECHA_MENSAJE in C:\xampp\htdocs\proyecto_foro\pagina_principal.php on line 64

在这一行:

$fecha_ultimo = $row_mensaje['FECHA_MENSAJE'];

请帮忙吗?

表MENSAJE: enter image description here

3 个答案:

答案 0 :(得分:2)

执行SELECT max(FECHA_MENSAJE) FROM mensaje WHERE ID_TEMA=$id_tema时,MySQL将返回列名为max(FECHA_MENSAJE)的行。你需要用这个名字来获取它:

$fecha_ultimo = $row_mensaje['max(FECHA_MENSAJE)'];

或别名栏:

SELECT max(FECHA_MENSAJE) as FECHA_MENSAJE FROM mensaje WHERE ID_TEMA=$id_tema

<强>更新

如果您需要其他数据而非max(FECHA_MENSAJE),则最好使用ORDER BY

SELECT FECHA_MENSAJE, ID_USUARIO FROM mensaje WHERE ID_TEMA=$id_tema ORDER BY FECHA_MENSAJE DESC LIMIT 1

答案 1 :(得分:1)

您需要使用别名。

SELECT max(FECHA_MENSAJE) AS FECHA_MENSAJE...

此外,您的第二个查询中不存在ID_USUARIO

您似乎可以通过单个查询完成两个循环。我们需要看到两个表的完整结构。

答案 2 :(得分:0)

我建议使用单个查询,而不是运行两个查询,这将节省你在php中使用循环进行额外调节。

SELECT 
    t.*,
    max(m.FECHA_MENSAJE) as Value
FROM tema as t
LEFT JOIN mensaje as m ON ID_TEMA = t.ID_TEMA
GROUP BY ID_TEMA