![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Serious2008 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Здравствуйте. У меня есть одна проблема нужно произовдить выборку из БД. Саму БД модифицировать нельзя.
Есть таблица в ней есть столбцы id, pid, name. Мне нужно делать выборку так чтобы в имени содержалось что-то. Т.е. первый запрос будет что-то типа.
Потом мне нужно делать выборку такую.
И так до тех пор покуда не закончатся они. Но тут есть одна проблема. Мне это всё нужно будет выводить вот в таком виде Имя родителя >> имя ребёнка 1 >> Имя ребёнка 1_1 Имя родителя >> имя ребёнка 1 >> Имя ребёнка 1_2 Имя родителя >> имя ребёнка 1 >> Имя ребёнка 1_3 Имя родителя >> имя ребёнка 2 >> Имя ребёнка 2_1 Имя родителя >> имя ребёнка 2 >> Имя ребёнка 2_2 Имя родителя_2 >> имя ребёнка 1 >> Имя ребёнка 1_1 ... Имя родителя_n >> Имя ребёнка 1 >> Имя ребёнка 1_1 Это сообщение отредактировал(а) Serious2008 - 4.2.2012, 16:19 |
||||
|
|||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
попробуй так
Это сообщение отредактировал(а) krundetz - 4.2.2012, 21:09 |
|||
|
||||
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 3 Всего: 45 |
Что-то не то написано Во первых вложенный запрос должен возвращать одну строку, не более. А значит выдаст ошибку Во вторых не однозначное условие AND pid = 0 AND pid = 'Что-то, но не ноль' никогда не будет истиным |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 14 Всего: 386 |
По моему - классическая рекурсия.
На первой итерации ищем все релевантные с pid=0, потом у каждого найденного родителя ищем детенков... Одним запросом, imho, никак, если глубину перебора не ограничивать. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| $дмитрий |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 19.6.2004 Репутация: 3 Всего: 45 |
А можно одним запросом выбрать все записи. Далее в цикле формировать нужный массив на основе рекурсии |
|||
|
||||
| Serious2008 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Парни оно всё хорошо. Я вот к чему пришёл.
В итоге на выходе получаю вот такое.
Вот эта тема и есть решение проблемы http://forum.vingrad.ru/forum/topic-346536.html Это сообщение отредактировал(а) Serious2008 - 5.2.2012, 18:11 |
||||
|
|||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 1 Всего: 69 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |