Мне нужно решить следующую проблему:
Допустим, есть таблица A, которая содержит несколько элементов, эта таблица копируется, чтобы стать таблицей B. В таблице B некоторые из исходных элементов утеряны, а некоторые добавлены. Справочная таблица AB отслеживает эти изменения. Затем таблица B копируется в таблицу C, и снова некоторые из существующих элементов теряются, а некоторые добавляются. Другая справочная таблица BC отслеживает эти отношения. ... и т. д.
Существует n таких таблиц с n-1 числом справочных таблиц.
Если я хочу узнать, какой из элементов моего выбора в таблице C уже присутствует в A, я могу сделать это, выполнив что-то вроде:
SELECT AB.oldID
FROM AB
JOIN BC
WHERE BC.newID IN (x, y, z)
Теперь, поскольку количество ссылочных таблиц может быть осторожным, количество строк JOIN может быть осторожным.
Должен ли я объединять запрос, циклически повторяя шаги и добавляя строки JOIN или shoudl. Я лучше напишу рекурсивную функцию, которая выбирает только элементы следующего шага, а затем позволяет функции вызывать саму себя, пока у меня не будет конечного результата?
Или есть другой, еще лучший способ сделать что-то подобное?