3

I have a bit of a problem that I cannot solve. I am running the following through my database 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 .= "<set label='" . $NumberResults2 . "' value='" . $ors3['Average'] . "' />";

        mysql_free_result($result4);
    }
}

mysql_close($link);

$strXML .= "</chart>";
$chart2 = renderChart("charts/Line.swf", "", $strXML, "AverageGD", 500, 260, false, true, true);

echo $chart2;
4

4 回答 4

14

您可以通过执行外部选择并按照您想要的方式(ASC)对其进行排序来重新排序该结果集:

SELECT * FROM (
    select * from LastResult ORDER BY Date DESC LIMIT 10
) as
ORDER BY Date ASC;

如果失败(就像在 PostgreSQL 9.3.4 中一样),请使用内部选择的别名使其如下所示:

SELECT * FROM (
    select * from LastResult ORDER BY Date DESC LIMIT 10
) as foo
ORDER BY foo.Date ASC;
于 2013-10-23T12:57:10.850 回答
0

Don’t forget to alias the inner selection or MySQL will produce an error.

SELECT * FROM (
    select * from LastResult ORDER BY Date DESC LIMIT 10
) aliasT
ORDER BY Date ASC;
于 2013-10-23T13:07:17.010 回答
0

Try using this;

SELECT * FROM (
    select * from LastResult ORDER BY Date DESC LIMIT 10
)
ORDER BY Date ASC;
于 2013-10-23T13:07:20.237 回答
0

您可以像这样在查询中执行此操作:

$strQuery = "select * FROM (select * from LastResult ORDER BY Date DESC LIMIT 10) ORDER BY Date";
于 2013-10-23T12:57:18.577 回答