I have a bit of a problem that I cannot solve. I am running the following through my DB using PHP:
$strQuery = "select * from LastResult ORDER BY Date DESC LIMIT 10";
The results all come back fine and as expected, however I then have to feed these into a line chart but when I do so, they are obviously displayed in reverse as I have the DB to return them in DESC by Date which means the most recent will be the first returned.
Is there a way that after returning these results I can reverse their order before feeding the data to my chart.
Here is the full query (please don't comment about the use of mysql instead of mysqli, I didn't write that bit)
$strQuery = "select * from LastResult ORDER BY Date DESC LIMIT 10";
$result3 = mysql_query($strQuery) or die(mysql_error());
if ($result3) {
while($ors4 = mysql_fetch_array($result3)) {
$NumberResults2 = $ors4['Date'];
$strQuery = "select AvGoalDifference as Average from LastResult where Date= '$NumberResults2'";
$result4 = mysql_query($strQuery) or die(mysql_error());
$ors3 = mysql_fetch_array($result4);
$strXML .= "";
mysql_free_result($result4);
}
}
mysql_close($link);
$strXML .= "";
$chart2 = renderChart("charts/Line.swf", "", $strXML, "AverageGD", 500, 260, false, true, true);
echo $chart2;
解决方案
You can re order that resultset by doing a outer select and ordering it the way you want (ASC):
SELECT * FROM (
select * from LastResult ORDER BY Date DESC LIMIT 10
) as
ORDER BY Date ASC;
Edit: If this fails (as it would in postgresql 9.3.4), use an alias for the inner select to make it as below:
SELECT * FROM (
select * from LastResult ORDER BY Date DESC LIMIT 10
) as foo
ORDER BY foo.Date ASC;