У меня есть требование извлекать данные динамически из нескольких таблиц. Таким образом, у меня есть 2 таблицы конфигурации для хранения информации об этих таблицах. Одна таблица содержит информацию о списке таблиц, как показано ниже:
TableName TableCode TableColumn
----------------------------------------
a a a1
a a a2
b b b1
b b b2
b b b3
c c c1
c c c2
d d d1
d d d2
У меня есть другая таблица, в которой хранятся отношения между этими таблицами:
RelationshipType TableCode1 TableCode2 TableColumn1 TableColumn2
-----------------------------------------------------------------------------
inner a b a1 b1
inner a b a2 b2
inner c d c1 d1
inner c b c2 b3
На основе вышеуказанной конфигурации мне нужно создать динамический запрос, как показано ниже:
select a.a1, a.a2, b.b1, b.b2, b.b3, c.c1, c.c2, d.d1, d.d2
from b
inner join a on b.b1 = a.b1 and b.b2 = a.b2
inner join c on b.b3 = c.c2
inner join d on c.c1 = d.d1
Теперь объединения могут быть внутренними, левыми или правыми, а порядок вставки в таблицу отношений может быть любым, но между всеми объединенными таблицами определенно будет связь. Каков наилучший оптимизированный способ создания динамического запроса? Должен ли я искать в таблице отношений наиболее родительскую таблицу, а затем создать дерево, чтобы найти связь с другими таблицами? Должен ли я поддерживать последовательность в таблице отношений для поиска самой родительской таблицы и соответствующих таблиц?