Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывести с одной таблицы с разной сортировкой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Родительские сообщения в одной сортировке а дочерние в другой
Sanek_OS9
Отправлено: 06 Мая, 2017 - 14:07:24
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


Помог: 0 раз(а)




Здравствуйте, передо мной возникла следующая задача, нужно вывести сами сообщения и комментарии к этим сообщениям, должен получится вывод в виде древа с одним условием, сообщения выводятся новые вверху, а комментарии к ним новые внизу.
Я все это сделал, но из за того что разная сортировка у меня два запроса, одним получаю сообщения под одной сортировкой, комментарии к ним под другой а потом их совмещаю в один массив:
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.  

Можно это дело как то оптимизировать?
(Добавление)
Должен получится один массив со всеми сообщениями уже отсортированными
 
 Top
Sanek_OS9
Отправлено: 06 Мая, 2017 - 16:51:44
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


Помог: 0 раз(а)




Сделал объединение с помощью 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.  
 
 Top
T1grOK
Отправлено: 07 Мая, 2017 - 10:15:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013  


Помог: 7 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `wall_posts` WHERE `id_user` = '$id_ank' ORDER BY IF(parent = 0, `id` * -1, `id`) ASC


-----
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
 
 Top
Sanek_OS9
Отправлено: 08 Мая, 2017 - 17:18:34
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


Помог: 0 раз(а)




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 для меня новое Закатив глазки , пойду изучать, еще раз спасибо Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB