PHP.SU

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

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

> Найдено сообщений: 3
rasy.js Отправлено: 11 Марта, 2017 - 01:23:53 • Тема: Не тривиальный sql запрос • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 59
Сделал на пыхе через рекурсию, т.к на языке запросов еще рука не набита. Есть замечания? $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.  
rasy.js Отправлено: 06 Марта, 2017 - 20:44:33 • Тема: Не тривиальный sql запрос • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 59
T1grOK, Благодарю за указатель
rasy.js Отправлено: 06 Марта, 2017 - 19:37:40 • Тема: Не тривиальный sql запрос • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 59
Здравствуйте! Улыбка

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.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB