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 :: Не тривиальный sql запрос

 PHP.SU

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


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

> Без описания
rasy.js
Отправлено: 06 Марта, 2017 - 19:37:40
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2017  


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




Здравствуйте! Улыбка

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. id | parent_id | closest_id
  3. 1  | 3            | 0
  4. 2  | 4            | 0
  5. 3  | 0            | 0
  6. 4  | 3            | 0
  7. 5  | 4            | 0
  8.  


Опытные бэкендеры. Помогите, пожалуйста, составить правильный запрос.
Итерируя по каждому полю нужно получить значение из ячейки parent_id. Обратиться по значению к полю, получить значение из его parent_id и записать значение в ячейку closest_id первого поля.

Такой итог:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. id | parent_id | closest_id
  3. 1  | 3            | 6
  4. 2  | 4            | 3
  5. 3  | 6            | 0
  6. 4  | 3            | 6
  7. 5  | 4            | 3
  8. 6  | 0            | 0
  9.  
 
 Top
T1grOK
Отправлено: 06 Марта, 2017 - 20:04:17
Post Id



Частый гость


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


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




Элементарный запрос с одним JOIN-ом.


-----
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
 
 Top
rasy.js
Отправлено: 06 Марта, 2017 - 20:44:33
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2017  


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




T1grOK, Благодарю за указатель
 
 Top
rasy.js
Отправлено: 11 Марта, 2017 - 01:23:53
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2017  


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




Сделал на пыхе через рекурсию, т.к на языке запросов еще рука не набита. Есть замечания? $list_categories массив объектов всех категорий.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function getParentId($id)
  4. {
  5.   $db = JFactory::getDbo();
  6.   $query = $db->getQuery(true);
  7.   $query->select('parent_id');
  8.   $query->from($db->quoteName('#__categories'));
  9.   $query->where($db->quoteName('id') . ' = ' . $id);
  10.   $db->setQuery($query);
  11.   $result = $db->loadResult();
  12.  
  13.   if (!(int)$result) {
  14.     $query->clear();
  15.     return $id;
  16.   }
  17.  
  18.   return getParentId($result);
  19. }
  20.  
  21. foreach ($list_categories as $key => $value) {
  22.   if ((int)$value->parent_id) {
  23.     $par_id = getParentId($value->id);
  24.     $query = $db->getQuery(true);
  25.     $query->update($db->quoteName('#__categories'))
  26.           ->set($db->quoteName('closest_id') . ' = ' . $par_id)
  27.           ->where($db->quoteName('id') . ' = ' . $value->id);
  28.     $db->setQuery($query);
  29.     $db->query();
  30.     $query->clear();
  31.   }
  32. }
  33. unset($value);
  34.  
  35.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB