|
|
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Добрый вечер я начинающий помогите разобраться: Имеется таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2014, 19:29:00 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
xaxcxКак в поле way записать полный путь до объекта Напишите пользовательскую функцию вычисления полного пути для одной записи по её id_object и используйте её в запросе. xaxcxПри внесении нового объекта поле way должно заполняться автоматическиИспользуйте ту же функцию в триггере ON INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 08:56:53 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
xaxcx, это невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 09:23:08 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Не советую хранить путь в таблице. Придется отслеживать все изменения. Например для строки с id_object=7 (Кремль) путь "Россия/Москва/Кремль". Но тогда надо следить за строкой с id_object=6 (Москва) - любое изменение в ней (удаление, изменение одного из трех полей) изменить полный путь в строке с id_object=7 (Кремль). Советую вычислять путь непосредственно когда идет обращение к данным. Есть статьи об иерархических запросах в mysql, например: http://club.shelek.ru/viewart.php?id=307 (Ваш случай - Классическая иерархия — id и parent_id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 10:37:18 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
r007Не советую хранить путь в таблице. Придется отслеживать все изменения.Это зависит от предметной области. У нас, например, в аналогичной таблице изменения подчинения запрещены, допустимы только добавление и удаление бездочерних элементов. И вполне себе хранения пути работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 10:43:14 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
miksoft, конечно зависит и от предметной области - если изменений/удалений в таблице не будет (только добавления), выгоднее один раз заполнить полный путь. В Вашем примере полный путь может измениться и не только при изменении иерархии: если "Москва" заменят на "Москва-центр", то полный путь у Кремя тоже должен измениться (хотя иерархия осталась прежней). :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 10:55:42 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
r007если "Москва" заменят на "Москва-центр", то полный путь у Кремя тоже должен измениться (хотя иерархия осталась прежней).Это почему же? Полный путь как был "1:6:7", так и останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 10:57:55 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
r007Не советую хранить путь в таблице. Придется отслеживать все изменения.Первое в принципе не может следовать из второго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 14:13:08 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
miksoftПолный путь как был "1:6:7", так и останется.Материализованный (не по индексам, а по содержимому) путь изменится. Но если существует соотв. триггер (а ещё лучше - серверная логика изменений реализована соотв. процедурами), то и путь пересчитается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 14:15:11 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
AkinaМатериализованный (не по индексам, а по содержимому) путь изменится.В моем представлении материализованный путь имеет смысл строить именно по индексам. А по содержимому - какой смысл, если его всегда можно "подклеить" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 14:25:16 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
xaxcx , банально, но довольно быстро: Код: sql 1. 2. 3. 4. 5. 6. 7. id_objectNAMEid_parentwayparents1Россия0Россия02Сша0Сша03Вашингтон2Сша/Вашингтон14Франция0Франция05Париж4Франция/Париж16Москва1Россия/Москва17Кремль6Россия/Москва/Кремль2 Случаи с б0льшим уровнем вложенности оговаривается в предельных условиях задачи Ну. или городить огороды для произвольного уровня вложенности - на выбор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:07:31 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, блин, пока добрался с работы, опередили опровергнуть "это нивазможна"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 15:10:58 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Случаи с б0льшим уровнем вложенности оговаривается в предельных условиях задачи Ну. или городить огороды для произвольного уровня вложенности - на выбор Для ограниченного, заранее известного и сравнительно небольшого, уровня вложенности решение правильное. А в общем случае - увы. Правда, если на неограниченном уровне вложенности нужны полные материализованные пути, то следует пересматривать структуру хранения данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:14:01 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Akina, Согласно изложенной задаче - решение вполне рабочее. Нет там "неограниченного" количества уровней. А для неограниченного - тут есть фак, где также выложено решение. Нифига конечно не тривиальное, но вполне рабочее. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:37:58 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Спасибо за ответ а можно ли както организовать запрос для произвольного уровня вложенности а так-же для удаления и вставки записей в середину иерархии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:27:16 |
|
||
|
Как занести в столбец иэрахию до корневого объекта?
|
|||
|---|---|---|---|
|
#18+
xaxcx, Тут есть ФАК по этой теме ... и даже прибитый гвоздиком кверху. Читайте и осваивайте "до полного просветления". Выбирайте себе ровно то, что надо. Там "многа чего" есть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 19:29:30 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38823338&tid=1833852]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 339ms |

| 0 / 0 |
