2012-06-22 2 views
1

Любые идеи о том, как я могу создать соединение в таблице, полученной из данных в ранее объединенной таблице? Например, у меня есть таблица объектов, которая содержит существующие имена таблиц, поле отображения этих таблиц и основное поле идентификатора этих таблиц. Я хочу присоединиться к таблице, указанной в таблице объектов, а также к таблице объектов.Присоединиться к таблице, полученной из предыдущего соединения

select T.field1,T.field2,T.field3,O.DisplayName 
from tableT as T 
inner join objects as O on T.SystemObjectID = O.SystemObjectID 
inner join O.TableName as X on X.O.ID = T.SystemObjectRecordID 

Я понял, что приведенный выше сценарий неверен. Но что является самым простым наиболее эффективным способом решения этой задачи? Надеюсь, я ясно понимаю, о чем я прошу ...

Благодарим за любую помощь заранее.

+0

Чтобы уточнить, у вас есть набор результатов из 2 соединенных таблиц, и вы хотите рассматривать это как одну таблицу для присоединения к третьей таблице? –

+0

@RayK - Насколько я понимаю, OP требует, чтобы третья таблица была получена из поля в таблице sys.objects. Использование sys.objects как своего рода косвенный поиск перед присоединением к динамической идентифицированной таблице. – MatBailie

+0

@RayK, Dems правильный. Это именно то, чего я пытаюсь выполнить. – Eric

ответ

1

Вы не можете этого сделать.

Что вы можете сделать, это взять результаты этого и создать строку, которая является SQL-запросом.

Вы даже можете настроить этот запрос и выполнить его с помощью sp_executesql.
- У этой ссылки есть несколько хороших примеров, чтобы вы начали.


Это происходит потому, что SQL компилируется в план выполнения, прежде чем она будет выполнена. На данный момент он должен знать таблицы, решает использовать индексы и т. Д.

Это означает, что данные являются данными, а sql - sql. Вы не можете использовать поздние скриптовые скрипты для изменения запрошенного запроса.

Вы застряли в SQL, который пишет SQL (Dynamic SQL) Я боюсь.

+0

На самом деле, хотя я не указывал в вопросе, я уже использую динамический sql для запроса. Таблицы могут быть переменными, и я просто не хотел присоединяться к таблицам сейчас и должен вернуться позже и обновить SP, присоединившись к другим таблицам .... – Eric

+1

@ Эрик - если таблица, к которой вы хотите присоединиться, явно где-то в SQL Query, вы не можете присоединиться к нему. Вы можете использовать * трюки *, такие как просмотр таблицы «TableA UNION TableB» и т. Д., Но тогда поля должны совпадать одинаково. Для подлинно динамического соединения вам нужен динамический sql. – MatBailie

Смежные вопросы