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]   

> Без описания
Рачей
Отправлено: 27 Июня, 2014 - 23:58:38
Post Id


Гость


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


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




Никак не могу понять как мне сделать из одного запроса к базе вот из такого:

Спойлер (Отобразить)


такое:
Спойлер (Отобразить)


Знаю как такое можно сделать двумя запросами. Но хочу одним, а никак не соображу как.
Помогите пожалуйста.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2014 - 09:00:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




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


-----
PostgreSQL DBA
 
 Top
Рачей
Отправлено: 28 Июня, 2014 - 10:21:05
Post Id


Гость


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


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




Удобнее да, а вот быстрее ли? Ну ладно, буду делать двумя. Но все равно хотелось бы понять как такое можно средствами php разобрать и расставить. Не подскажете?
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2014 - 10:53:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Быстрее. Один простой запрос, второй запрос вообще чуть ли не первичному ключу.

Например, для связи по первичному ключу:
PHP:
скопировать код в буфер обмена
  1. $rgData = array();
  2. foreach (\db::instance()->query($sQuery) as $rgRow) {
  3. $rgRow['fields'] = array();
  4. $rgData[ $rgRow['key'] ] = $rgRow;
  5. }
  6. if (!empty($rgData)) {
  7. $sAnotherQuery = "select /**/ where key_id in (".join(',', array_keys($rgData)).")";
  8. foreach (\db::instance()->query($sAnotherQuery) as $rgRow) {
  9. $rgData[ $rgRow['key_id'] ]['fields'][] = $rgRow;
  10. }


-----
PostgreSQL DBA
 
 Top
Рачей
Отправлено: 28 Июня, 2014 - 11:46:12
Post Id


Гость


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


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




Это из какого фреймворка запросы ????
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июня, 2014 - 11:55:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Не имеет значения, код написан прямо тут. Можно считать, что \db::instance() возвращает объект PDO.


-----
PostgreSQL DBA
 
 Top
Рачей
Отправлено: 28 Июня, 2014 - 12:21:26
Post Id


Гость


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


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




Нифига не понимаю как это работает...
 
 Top
Рачей
Отправлено: 29 Июня, 2014 - 00:25:11
Post Id


Гость


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


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




Разобрался спасибо.
 
 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