Как заменить сортировку PHP на SQL? - PullRequest
0 голосов
/ 25 марта 2012

псевдокод

$res = Query("SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15");
SortArray(&$res, 'date', 'asc');

Если описать словами, то взять последнюю часть данных отсортируют в порядке убывания из базы данных, но дать данные, отсортированные в порядке возрастания.

Ответы [ 3 ]

3 голосов
/ 25 марта 2012

Попробуйте:

$res = Query("SELECT * FROM ( SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15) ORDER BY `date` ASC");
0 голосов
/ 25 марта 2012

Вместо создания магического SQL-запроса, вы должны выбрать 15 первых строк в порядке убывания .А потом просто прочитайте результаты с конца.

$statement = $pdo->query('SELECT * FROM `table` ORDER BY `date` DESC LIMIT 15');
if ( ! $statement->execute())
{
    throw new Exception('query failed !');
}

$data = $statement->fetchAll(PDO::FETCH_ASSOC);
while ( $row = array_pop($data))
{
    var_dump( $row );
}
0 голосов
/ 25 марта 2012

Вы можете использовать функцию usort для сортировки массива по определенному ключу:

$res_array=array();  
while($row=mysql_fetch_row($res))  
   $res_array[]=$row;  

$new_arr = usort($res_array,"my_func");  
function my_func($a, $b)  
{  
    if ($a['date'] == $b['date']) {  
        return 0;  
    }  
    return ($a['date'] < $b['date']) ? -1 : 1;  
}   

* может потребоваться некоторая отладка. принять идею.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...