#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. Это дизайн, который был предложен мне, к сожалению, ура всем, я думаю, что буду настаивать на рефакторинге