|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
Имеется таблица product, импортированная из Компаса. Структура таблицы: code - код товара type - Тип (товар(р) / блюдо(d) / группа(g)) name - Наименование товара p_code - Код группы товара (код родителя) Максимальное число уровней иерархии - пять. Нужно составить запрос на формирование полного пути товара. Сделал запрос-выборку через левое соединение по полям code и p_code для пяти таблиц: SELECT product.CODE, product.NAME, product_1.NAME, product_2.NAME, product_3.NAME, product_4.NAME, product_5.NAME FROM ((((product LEFT JOIN product AS product_1 ON product.CODE = product_1.P_CODE) LEFT JOIN product AS product_2 ON product_1.CODE = product_2.P_CODE) LEFT JOIN product AS product_3 ON product_2.CODE = product_3.P_CODE) LEFT JOIN product AS product_4 ON product_3.CODE = product_4.P_CODE) LEFT JOIN product AS product_5 ON product_4.CODE = product_5.P_CODE; но результат не устраивает. Например, товар Батарейки находится в ТОВАРЫ/ИЗДЕРЖКИ/Батарейки, но выводятся также строки ИЗДЕРЖКИ/Батарейки, и просто Батарейки. Какой должен быть запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 18:43 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
vadim007, надо плясать от головных позиций которые никуда не входят(они должны быть помечены как-то), лень сочинять пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 19:17 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, что такое "головные позиции, которые никуда не входят"? В таблице product хранится полная структура (иерархия) справочника. Группы имеют type=g, конечные элементы - p или d. Но это излишняя информация, т.к. по цепочке взаимных ссылок (число в поле p_code - это код родительского элемента) можно составить полный путь для каждого конечного элемента. Не хочется заморачиваться с циклами, думал с помощью запроса проще будет. Да не тут то было.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 19:30 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
vadim007Какой должен быть запрос?Inner Join. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 19:41 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
vadim007ПЕНСИОНЕРКА, что такое "головные позиции, которые никуда не входят"? В таблице product хранится полная структура (иерархия) справочника. Группы имеют type=g, конечные элементы - p или d. Но это излишняя информация, т.к. по цепочке взаимных ссылок (число в поле p_code - это код родительского элемента) можно составить полный путь для каждого конечного элемента. Не хочется заморачиваться с циклами, думал с помощью запроса проще будет. Да не тут то было.... ищите, голова должна быть по крайней мере укажите код искомой детали и идите в обратную сторону(она ведь куда-то входит) лень думать --пятница .... причем у разных позиций может быть разное количество родителей(не у всех по 5) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 20:34 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
AkinaInner Join. В этом случае нужно использовать столько таблиц product, сколько ожидаем уровней иерархии. Если максимальное число уровней - 5, то нужно 4 запроса - с 2-мя таблицами, 3-мя, 4-мя, 5-тью. И результаты всех запросов объединить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 20:54 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
vadim007Если максимальное число уровней - 5, то нужно 4 запроса - с 2-мя таблицами, 3-мя, 4-мя, 5-тью. И результаты всех запросов объединить.Не 4, а 5 запросов, с 2,3,4,5 и 5 таблицами, причём в первых 4-х одна таблица используется в NOT EXISTS - зачем тебе незаконченные пути? Просто работать это будет гораздо быстрее, чем один запрос с левыми связываниями. Как я понимаю, у тебя в таблице записей куда как больше сотни... А вообще подумай. Насколько частая эта операция? Может, добавить поле и сразу материализовывать пути? А, может, вообще уйти от родитель-потомок в сторону хранения нормального дерева? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 21:28 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
AkinaМожет, добавить поле и сразу материализовывать пути? в изделиях этого не сделать --одна и та же деталь/сборка может входить в десятки изделий ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 21:36 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА , а при чём тут изделия? см. исходный вопрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 21:49 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
vadim007импортированная из Компаса. я исходила из этой строки --- КОМПАС --программа для разработки конструкций и документации к ним ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 22:20 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
По-моему, речь идёт о КОМПАС SQL, а вовсе даже не о КОМПАС-3D. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2017, 22:29 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
AkinaПо-моему, речь идёт о КОМПАС SQL, а вовсе даже не о КОМПАС-3D. Совершенно верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2017, 05:30 |
|
Запрос на формирование полного пути элемента справочника
|
|||
---|---|---|---|
#18+
нашел решение: http://ts-soft.ru/blog/hierarchyid ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2017, 15:21 |
|
|
start [/forum/topic.php?fid=45&fpage=76&tid=1612459]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 356ms |
total: | 511ms |
0 / 0 |