Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Вывести с одной таблицы с разной сортировкой

Страниц (1): [1]
 

1. Sanek_OS9 - 06 Мая, 2017 - 14:07:24 - перейти к сообщению
Здравствуйте, передо мной возникла следующая задача, нужно вывести сами сообщения и комментарии к этим сообщениям, должен получится вывод в виде древа с одним условием, сообщения выводятся новые вверху, а комментарии к ним новые внизу.
Я все это сделал, но из за того что разная сортировка у меня два запроса, одним получаю сообщения под одной сортировкой, комментарии к ним под другой а потом их совмещаю в один массив:
PHP:
скопировать код в буфер обмена
  1.         $parent = DB::me()->query("SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` = '0' ORDER BY `id` DESC")->fetchAll() ;
  2.         $children = DB::me()->query("SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` > '0' ORDER BY `id` ASC")->fetchAll() ;
  3.         $result = array_merge($parent, $children);
  4.  

Можно это дело как то оптимизировать?
(Добавление)
Должен получится один массив со всеми сообщениями уже отсортированными
2. Sanek_OS9 - 06 Мая, 2017 - 16:51:44 - перейти к сообщению
Сделал объединение с помощью union, всем спасибо за помощь здесь все всегда всем помогают...
PHP:
скопировать код в буфер обмена
  1.         $result = DB::me()->query(""
  2.                 . "(SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` = '0' ORDER BY `id` ASC) "
  3.                 . "UNION "
  4.                 . "(SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' AND `parent` > '0' ORDER BY `id` ASC)"
  5.                 . "")->fetchAll() ;
  6.  
3. T1grOK - 07 Мая, 2017 - 10:15:47 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' ORDER BY IF(parent = 0, `id` * -1, `id`) ASC
4. Sanek_OS9 - 08 Мая, 2017 - 17:18:34 - перейти к сообщению
T1grOK пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' ORDER BY IF(parent = 0, `id` * -1, `id`) ASC

Огромное спасибо, ORDER BY IF для меня новое Закатив глазки , пойду изучать, еще раз спасибо Улыбка

 

Powered by ExBB FM 1.0 RC1