powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на формирование полного пути элемента справочника
13 сообщений из 13, страница 1 из 1
Запрос на формирование полного пути элемента справочника
    #39449616
vadim007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица 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;
но результат не устраивает. Например, товар Батарейки находится в ТОВАРЫ/ИЗДЕРЖКИ/Батарейки, но выводятся также строки ИЗДЕРЖКИ/Батарейки, и просто Батарейки.
Какой должен быть запрос?
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449622
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadim007,

надо плясать от головных позиций которые никуда не входят(они должны быть помечены как-то),
лень сочинять пример
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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;
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449625
vadim007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,
что такое "головные позиции, которые никуда не входят"?
В таблице product хранится полная структура (иерархия) справочника. Группы имеют type=g, конечные элементы - p или d. Но это излишняя информация, т.к. по цепочке взаимных ссылок (число в поле p_code - это код родительского элемента) можно составить полный путь для каждого конечного элемента. Не хочется заморачиваться с циклами, думал с помощью запроса проще будет. Да не тут то было....
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449629
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadim007Какой должен быть запрос?Inner Join.
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449638
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadim007ПЕНСИОНЕРКА,
что такое "головные позиции, которые никуда не входят"?
В таблице product хранится полная структура (иерархия) справочника. Группы имеют type=g, конечные элементы - p или d. Но это излишняя информация, т.к. по цепочке взаимных ссылок (число в поле p_code - это код родительского элемента) можно составить полный путь для каждого конечного элемента. Не хочется заморачиваться с циклами, думал с помощью запроса проще будет. Да не тут то было....
ищите, голова должна быть
по крайней мере укажите код искомой детали и идите в обратную сторону(она ведь куда-то входит)
лень думать --пятница ....

причем у разных позиций может быть разное количество родителей(не у всех по 5)
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449640
vadim007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaInner Join.
В этом случае нужно использовать столько таблиц product, сколько ожидаем уровней иерархии. Если максимальное число уровней - 5, то нужно 4 запроса - с 2-мя таблицами, 3-мя, 4-мя, 5-тью. И результаты всех запросов объединить.
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449649
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadim007Если максимальное число уровней - 5, то нужно 4 запроса - с 2-мя таблицами, 3-мя, 4-мя, 5-тью. И результаты всех запросов объединить.Не 4, а 5 запросов, с 2,3,4,5 и 5 таблицами, причём в первых 4-х одна таблица используется в NOT EXISTS - зачем тебе незаконченные пути?
Просто работать это будет гораздо быстрее, чем один запрос с левыми связываниями. Как я понимаю, у тебя в таблице записей куда как больше сотни...

А вообще подумай. Насколько частая эта операция? Может, добавить поле и сразу материализовывать пути? А, может, вообще уйти от родитель-потомок в сторону хранения нормального дерева?
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449650
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaМожет, добавить поле и сразу материализовывать пути?
в изделиях этого не сделать --одна и та же деталь/сборка может входить в десятки изделий
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449652
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА , а при чём тут изделия? см. исходный вопрос...
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449656
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadim007импортированная из Компаса.
я исходила из этой строки
--- КОМПАС --программа для разработки конструкций и документации к ним
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449659
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, речь идёт о КОМПАС SQL, а вовсе даже не о КОМПАС-3D.
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39449675
vadim007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaПо-моему, речь идёт о КОМПАС SQL, а вовсе даже не о КОМПАС-3D.
Совершенно верно.
...
Рейтинг: 0 / 0
Запрос на формирование полного пути элемента справочника
    #39450091
vadim007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нашел решение:
http://ts-soft.ru/blog/hierarchyid
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на формирование полного пути элемента справочника
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]