Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
есть древовидное поле: 1 1.1 1.2 1.2.1 1.3 2.1 2.2.3 2.2.3.1 2.3 3.4 3.5.6 3.6 3.6.1 3.6.1.1 3.6.1.2 4 4.2 ... и т.д. надо бы извлечь родителя каждой ветки т.е. в данном примере это будет 1 2.1 2.2.3 2.3 3.4 3.5.6 3.6 4 какие будут идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2001, 15:37 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
Честно говоря, ничего не понял. Молчание других говорит, скорее всего, что они не поняли тоже. Вопросы по-порядку. 1. Что означает фраза "древовидное поле"? Может быть, это не поле, а таблица, в которой логически организуется дерево с помощью некого поля (классика - это ссылка на родительскую запись)? 2. В приведенном примере т.н. значение поля - это значение одного поля одной записи или это несклько значений одного поля (по множеству записей)? 3. Что подразумевается под фразой "родитель каждой ветки"? Ветка - это совокупность записей, среди которых может быть множество родителей и детей. Родитель всех веток - это корень дерева (если только это действительно дерево). 4. Почему в приведенном примере не все ветки начинают свою адресацию от корня? Как должен интерпретироваться подобный пример: 1.1.1.1 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 Сколько тут веток? Одна или две? Если две, то как ты определяешь количество веток в таком примере: 1.1 1.1.1 Где гарантия, что вторая строка - не начало новой ветки? А в этом примере сколько веток: 1.1 1.1 5. Может, сначала привести мысли в порядок, а тогда и вопросы отпадут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2001, 17:26 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
н-да... были у меня подозрения, что выразился я неаккуратно прямо скажем итак, еще раз. никакой таблицы с ссылками на родителей, т.е. это НЕ классический граф. есть два поля. Tree varchar(100) --содержит записи типа 1; 1.1; 1.1.2; 2; 2.1; 2.1.1;... ; и т.д. Summ int нужно получить рекордсет состоящий из записей которые представляют собой МИНИМАЛЬНО возможную длину значений поля tree и имеющие ОБЩИЙ корень с другими значениями tree. то есть. если представить три записи 1.2 100 1.3 200 1.3.1 300 1.2 не имеет общего корня среди оставшихся значений, кроме самого себя. т.е. эта запись войдет в рекордсет 1.3 имеет общий корень с 1.3.1, и является родителем для значения 1.3.1, значит второе значение рекордсета - 1.3 получаем две записи 1.2 100 1.3 200 Под ветками я подразумевал совокупность записей имеющих одного общего родителя (1.3 и 1.3.1 - одна ветка) и она не обязательно имеет корень 1 или 2 или 3 или любое другое целочисленное значение. Сейчас более доходчиво? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2001, 17:54 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
У тебя есть шанс сделать модель нормальной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2001, 00:53 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
Я согласен с папа Карло, лучше сменить модель, с такой работать будет сложно. Если для этого есть препятствие, то могу посоветовать такой вариант выборки: Шаг 1 - выбрать все записи, имеющие родителей, т.е. часть значения поля до последней точки = полю родителя. Шаг 2 - выбрать все записи за исключением найденных на шаге 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2001, 07:56 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
begin tran create table #t (f varchar(20)) insert into #t (f) values('1') insert into #t (f) values('1.1') insert into #t (f) values('1.2') insert into #t (f) values('1.2.1') insert into #t (f) values('1.3') insert into #t (f) values('2.1') insert into #t (f) values('2.2.3') insert into #t (f) values('2.2.3.1') insert into #t (f) values('2.3') insert into #t (f) values('3.4') insert into #t (f) values('3.5.6') insert into #t (f) values('3.6') insert into #t (f) values('3.6.1') insert into #t (f) values('3.6.1.1') insert into #t (f) values('3.6.1.2') insert into #t (f) values('4') insert into #t (f) values('4.2') select * from #t t1 where not exists(select * from #t t2 where len(t2.f) < len(t1.f) and t1.f like t2.f + '%') rollback ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2001, 12:21 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
2 AL_R. Привет! Рад тебя тут лицезреть. Только, похоже, ты впопыхах листал топики этой ветки и не до конца понял суть вопроса. Твое решение подразумевает хранение дерева не в одной записи, а в нескольких. А у автора вопроса все эти ветки - это одно значение, которое еще предстоит разобрать по полочкам. IMHO, задача имеет решение. Но уж больно она неизящная. Просто руки от нее отдергиваются. Похоже, автор вопроса плохо продумал структуру данных. Возможно, что его подход содержит просто концептуальную ошибку. Предлагаю ему помедитировать над п.4 моего предыдущего топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2001, 19:18 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
у меня так получилось(дополнение к скрипту AL_R) SELECT f.f child, p.f parent from #t f left outer join #t p on patindex('%.%',f.f)<>0 and p.f=substring(f.f,1,datalength(f.f)-patindex('%.%',reverse(f.f))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2001, 07:44 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
всем спасибо стратегу garе: структуру базы продумывал не я. задача единоразовая, т.е. есть необходимость делать такие операции раз в какое-то время и все. априори эта зача _никакой_ связи с классическими деревьями не имеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2001, 09:18 |
|
||
|
Получить родителя
|
|||
|---|---|---|---|
|
#18+
2 Garya Привет, привет! Судя по приведенному жалаемому результату, дерево и хранится в разных записях. Поэтому данная конкретная задача свелась к поиску "наменьшей общей подстроки". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2001, 14:25 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32017274&tid=1824843]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 379ms |

| 0 / 0 |
