SQL: замена части запроса подзапросом в предложении FROM - PullRequest
0 голосов
/ 04 июля 2019

У меня есть база данных, включающая таблицу под названием [Table], в которой перечислены все таблицы в этой базе данных. Теперь я хочу написать SQL-запрос, используя несколько JOINS, который получает конкретное имя таблицы из [Table] в подзапросе для выбора из этой таблицы ... Надеюсь, это не слишком смущает.

Итак, [Таблица] выглядит так:

IdTable    Tablename
1          Adress
2          Project
3          User
...

Запрос должен выглядеть так:

SELECT * FROM (SELECT Type FROM dbo.[Table] WHERE tablename = 12)

Возможно ли что-то подобное?

Я знаю, что подзапросы возможны, но я не знаю, как это сделать в этом случае.

Заранее спасибо.

С уважением Lars

1 Ответ

0 голосов
/ 04 июля 2019

Попробуйте приведенный ниже динамический код, чтобы получить ожидаемый результат.

DECLARE @sqlCommand  AS NVARCHAR(MAX)
DECLARE @TableName AS NVARCHAR(MAX)

SELECT @TableName = tablename FROM dbo.[Table] WHERE Type = 12

SET @sqlCommand= N'SELECT * FROM '+@TableName+''

EXEC (@sqlCommand)

Примечание. Полагаю, вы хотите выбрать TableName, где Type = 12, и я соответственно изменю выбор и фильтрацию.

Вы также можете выполнить запрос напрямую, как показано ниже, не создавая строку команды-

DECLARE @TableName AS NVARCHAR(MAX)
SELECT @TableName = tablename FROM dbo.[Table] WHERE Type = 12

EXEC (N'SELECT * FROM '+@TableName+'')
...