Динамическое объединение таблиц с предложением where

#sql-server

Вопрос:

Таблица 1

ID Где Ценность
1 Колонка1 2
2 Колонка2 3

Таблица 2

ID Колонка1 Колонка2 Кое-что
1 5 2 Некоторые данные
2 6 3 Еще немного данных

В текущем сценарии у меня есть 2 таблицы, которые необходимо объединить, имя поля второй таблицы определяется как значение в первой таблице.

Мне нужно получить данные, которые необходимо динамически объединить с предложением where, например:

 select * from Table1 T1
inner join T1.WhereField  on T2. "Dynamic where field column"
where T2."Dynamic where field column" = t1.Value
 

Это вообще достижимо?

Комментарии:

1. Нет, ты не можешь этого сделать. Если у вас такой тип дизайна, у вас есть недостаток в дизайне; вам нужно вернуться и пересмотреть свой выбор дизайна.

2. Это достижимо с помощью очень сложного динамического подхода SQL, но в этот момент возникает вопрос, стоит ли оно того. Полученный в результате dyanmic SQL-оператор, созданный, не будет выглядеть так, как вы думаете, скорее, он создаст нединамический SQL-оператор, который на самом деле может интерпретировать механизм БД. Динамический анализ, который вы предлагаете, просто не существует в SQL Server.

3. Вам повезло бы, если бы это было возможно постоянно, а это значит, что даже если бы вы могли это сделать, вам определенно НЕ СЛЕДОВАЛО бы, но я думаю, что Ларну уже проиллюстрировал это, но другими словами. Нарушение правила нормализации здесь заставляет меня внутренне кричать: «ТАК ПОМОГИ МНЕ, КОДД». Хотя я, возможно, немного углубляюсь в юмор дизайна БД, это, безусловно, не то, что вам следует хотеть делать, даже если вы работаете с дизайном, который у вас нет выбора изменить.

4. Это дизайн, который был предложен мне, к сожалению, ура всем, я думаю, что буду настаивать на рефакторинге