要创建表,我使用以下查询检索数据:
SELECT cId,cProductId,cDate,cInfo FROM tProduct ORDER BY cProductId ASC,cDate ASC;
当然,我对查询进行了大量简化,但是你得到的是,同一产品可能有很多记录,而且是我最新的唯一一个记录,因此我如何订购我的查询:我只存储信息我在while循环中遇到的最后一行。
while (($row = $result->fetch()) !== FALSE)
{
if(!empty($row[0])){
if(($table_row[1]!=$row[1])&&(!empty($table_row[0]))){
//Display the last row saved
}
$table_row= array($row[0],$row[1],$row[2],$row[3]);
}
}
现在我想为生成的html表实现一些排序选项。我将排序信息存储在会话变量中。在排序选项中,我希望能够按日期排序。在按日期订购查询时,如何确保仅检索每个产品的最新行?
答案 0 :(得分:3)
您的查询中未包含FROM
子句。但是,假设您需要每个产品ID的最新行,您可以执行以下操作:
SELECT cId,cProductId,cDate,cInfo
FROM tProduct t1
WHERE cDate = (SELECT max(cDate) FROM tProduct t2 where t1.cProductID = t2.cProductId)
ORDER BY cProductId ASC,cDate ASC;