|
|
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
Тут такая задача... Имеется таблица Спецификация, в ней есть поле Код_позиции и Родитель. Суть такая. Изначально имеем определенное значение Код_позиции и выбираем все записи из данной таблицы с этим кодом. Затем необходимо в этой же таблице найти все записи, где поле Родитель содержит значение данного Кода_позиции. Для полученных записей cделать то же самое и так пока поиск не даст нулевого результата. Уровень вложенности произвольный. В отчете все это должно представляться в виде древовидной структуры. Товарисчи, памагите кто могет, pls! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:47 |
|
||
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
А вы не братья? дерево в отчет... Для начала надо структуру данных менять (ИМХО) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:50 |
|
||
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
Всегда поражался проницательности русских людей... 8-) Мы не братья, просто работаем вместе, я просто решил поконкретней вопрос задать... :-))))) А что ты имеешь в виду под изменением структуры данных? Была конечно мысль создать временную таблицу и уже по ней строить отчет, но хотелось бы узнать мнение компетентных людей, может есть простой способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 11:55 |
|
||
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
Имеется ввиду (это чисто пример, есть и другие способы): 1. Добавляем поле в котором храним полную иерархию str_ie Для корня оно = "" Для потомнок первого уровня "1" ("2", "3") Для потомков второго уровня (например для "2") = "21" ("22", "23") Примерно: id parent str_ie 1 Null "" 2 1 "1" 3 1 "2" 4 2 "11" 5 1 "3" 6 2 "12" 7 6 "121" Идея ясна? Запрос вывода поддерева для некоторой вершины с id = (например 2) Select t1.* From tbl t1 Inner Join tbl t2 On (t2.id = 2) And (t1.str_ie Like t2.ie & "*") Порядок вложенности можно определять по длине поля str_ie :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 12:05 |
|
||
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
Это конечно хорошо, пока ID один разряд занимает, а когда больше и числа получатся разной длины? Или резервировать в str_ie разряды, заполняя незначащие нулями? Да, кстати, а то что выборка строится по текстовому полю не скажется на скорости при большом размере БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 12:16 |
|
||
|
Создание отчета
|
|||
|---|---|---|---|
|
#18+
Зарделяй точками! Т.е. Примерно: id parent str_ie 1 Null "." 2 1 ".1." 3 1 ".2." 4 2 ".1.1." 5 1 ".3." 6 2 ".1.2." 7 6 ".1.2.1." ? авторДа, кстати, а то что выборка строится по текстовому полю не скажется на скорости при большом размере БД? ИМХО: 1. используется первый значащий символ (возможно использование индексов) 2. быстрее будет, чем по рекордсету в цикле шарахаться :) - ну в крайнм случай - это всего один проход, а не по количеству вложенностей (которые не известны :( ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2004, 12:23 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32540793&tid=1674247]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 506ms |

| 0 / 0 |
