| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Многоуровневая выборка данных |
| Автор: Serious2008 4.2.2012, 16:17 | ||||
| Здравствуйте. У меня есть одна проблема нужно произовдить выборку из БД. Саму БД модифицировать нельзя. Есть таблица в ней есть столбцы 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 |
| Автор: krundetz 4.2.2012, 21:07 | ||
попробуй так
|
| Автор: $дмитрий 4.2.2012, 21:53 | ||
Что-то не то написано Во первых вложенный запрос должен возвращать одну строку, не более. А значит выдаст ошибку Во вторых не однозначное условие AND pid = 0 AND pid = 'Что-то, но не ноль' никогда не будет истиным |
| Автор: ksnk 4.2.2012, 22:22 |
| По моему - классическая рекурсия. На первой итерации ищем все релевантные с pid=0, потом у каждого найденного родителя ищем детенков... Одним запросом, imho, никак, если глубину перебора не ограничивать. |
| Автор: $дмитрий 4.2.2012, 22:40 | ||
А можно одним запросом выбрать все записи. Далее в цикле формировать нужный массив на основе рекурсии |
| Автор: Serious2008 5.2.2012, 01:37 | ||||
Парни оно всё хорошо. Я вот к чему пришёл.
В итоге на выходе получаю вот такое.
Вот эта тема и есть решение проблемы http://forum.vingrad.ru/forum/topic-346536.html |