Рекурсивный просмотр базы данных - PullRequest
0 голосов
/ 04 апреля 2019

У меня такая ситуация.Начиная с таблицы, я должен проверить все записи, которые соответствуют ключу.Если записи найдены, я должен проверить другую таблицу, используя ключ из первой таблицы и т. Д., Более подробно на пяти уровнях.Есть способ сделать это рекурсивным способом, или я должен написать весь код "вручную"?Я использую язык Visual Fox Pro.Если это невозможно, возможно ли использовать рекурсию для отображения дерева?

Ответы [ 3 ]

0 голосов
/ 04 апреля 2019

Если таблицы имеют схожую структуру или вам нужно только просмотреть несколько полей, вы можете написать рекурсивную подпрограмму, которая получает имя таблицы, ключ для проверки и, возможно, поля, которые нужно проверять в качестве параметров.Наверное, самая сложная задача - знать, что передать на следующий звонок.

Не думаю, что смогу дать какой-либо совет, по крайней мере, не увидев некоторые структуры таблиц.

0 голосов
/ 15 апреля 2019

Извините за столь поздний ответ, но проблема, конечно, заключалась в том, что рекурсия не была жизнеспособным решением, поскольку мне приходилось искать в нескольких таблицах.Поэтому я решил выполнить простой двухуровневый поиск в нужных мне таблицах.

Большое спасибо за помощь и еще раз извините за столь поздний ответ.

0 голосов
/ 04 апреля 2019

Вы можете установить связь между таблицами. Например:

USE table_1.dbf IN 0 SHARED
USE table_2.dbf IN 0 SHARED
SET ORDER TO TAG key_field OF table_2.cdx IN table_2
SET RELATION TO key_field INTO table_2 ADDITIVE IN table_1

Первые две команды открывают table_1 и table_2. Затем вы должны установить порядок / индекс таблицы_2. Если у вас нет индекса для ключевого поля, это не будет работать. Последняя команда устанавливает отношение между двумя таблицами в ключевом поле.

Отсюда вы можете просмотреть обе таблицы, а записи таблицы_2 будут отфильтрованы на основе ключевого поля таблицы_1. Надеюсь, это поможет.

...