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 :: Рекурсивная функция [4]

 PHP.SU

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


 Страниц (4): « 1 2 3 [4]   

> Описание: почему то не "рекурсивица"...
DeepVarvar Супермодератор
Отправлено: 25 Августа, 2011 - 18:52:24
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




egir пишет:
Тпереб при заходе в тему id=97426 нужно найти ее родителя. Вы делаете запрос:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.id,t1.name,t2.id pid,t2.name pname
  2.   FROM tbl t1 LEFT JOIN tbl t2 ON t2.id = t1.parent_id WHERE t1.id = $id;

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.id,t1.name,t2.id pid,t2.name pname FROM tbl t1,tbl t2
  2.   WHERE t1.id = $id AND t1.parent_id = t2.id;

(Добавление)
Всего один запрос...
Выберите какой из вариантов вам больше нравится.
 
 Top
egir
Отправлено: 25 Августа, 2011 - 19:18:00
Post Id



Новичок


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


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




DeepVarvar пишет:
egir пишет:
Тпереб при заходе в тему id=97426 нужно найти ее родителя. Вы делаете запрос:

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.id,t1.name,t2.id pid,t2.name pname
  2.   FROM tbl t1 LEFT JOIN tbl t2 ON t2.id = t1.parent_id WHERE t1.id = $id;

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT t1.id,t1.name,t2.id pid,t2.name pname FROM tbl t1,tbl t2
  2.   WHERE t1.id = $id AND t1.parent_id = t2.id;

(Добавление)
Всего один запрос...
Выберите какой из вариантов вам больше нравится.


Второй нравится)) Только таблица у нас одна, в ней 100 записей и у элемента родителя которого мы ищем, 4 предка. То-есть вместе с элементом 5 записей. Попробуйте воспроизвести ситуацию с реальной таблицей. Если не ошибаюсь то в результате будет одна запись. И с двумя таблицами кажется тоже не работает.

(Отредактировано автором: 25 Августа, 2011 - 19:18:31)

 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Августа, 2011 - 19:28:59
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




egir пишет:
олько таблица у нас одна
Оба варианта про одну таблицу.
egir пишет:
кажется

Вам только кажется.
Насколько я понял задачу:
Таблица одна.
Известен id текущей записи.
Нужно достать родителя и всех братьев и сестер,
на данном уровне вложенности одним запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT c.id,c.name,p.id pid,p.name pname
  2.   FROM tbl c
  3.   LEFT JOIN tbl p ON p.id = c.parent_id
  4.   WHERE c.id = $id OR c.parent_id = p.id
  5.   GROUP BY c.id
 
 Top
egir
Отправлено: 25 Августа, 2011 - 21:23:18
Post Id



Новичок


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


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




DeepVarvar пишет:
egir пишет:
олько таблица у нас одна
Оба варианта про одну таблицу.
egir пишет:
кажется

Вам только кажется.
Насколько я понял задачу:
Таблица одна.
Известен id текущей записи.
Нужно достать родителя и всех братьев и сестер,
на данном уровне вложенности одним запросом:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT c.id,c.name,p.id pid,p.name pname
  2.   FROM tbl c
  3.   LEFT JOIN tbl p ON p.id = c.parent_id
  4.   WHERE c.id = $id OR c.parent_id = p.id
  5.   GROUP BY c.id


Если работает, отлично. Но я говорил про тот пример что вы давали с выборкой всех записей. А по поводу этого, скиньте плиз дамп базы вида указанного мной выше, и запросик под нее, чтобы протестить.

(Отредактировано автором: 25 Августа, 2011 - 21:24:11)

 
 Top
DeepVarvar Супермодератор
Отправлено: 25 Августа, 2011 - 21:35:54
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




egir пишет:
про тот пример что вы давали с выборкой всех записей
Я говорил что не видел в жизни построения МЕНЮ с подкатегориями где количество элементов больше ~200, поэтому именно для случая с выводом древовидной структуры меню - это то самое что нужно.
egir пишет:
скиньте плиз дамп базы вида указанного мной выше, и запросик под нее, чтобы протестить

Ну так сами сделайте базу, напишите запрос и потестируйте.
 
 Top
Страниц (4): « 1 2 3 [4]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB