Мне было интересно, есть ли способ запроса в MSSQL Server (2005 или 2008 или оба) с использованием имен / столбцов таблиц, которые хранятся внутри самой таблицы. Надеюсь, это имеет смысл, но я не думаю, что ниже приведен пример того, что я имею в виду, рассмотрим таблицы:
tableCollection
----------------------------
CollectionID ident pk
Name varchar(30)
CollectionTypeID int fk
tableCollectionType
---------------------------
CollectionTypeID ident pk
Name varchar(30)
TableName varchar(50)
NameColumn varchar(50)
tableCollectionLinks
---------------------------
CollectionLinkID ident pk
CollectionID int
LinkID int
Это, очевидно, упрощенный пример, и типы данных предназначены только для того, чтобы показать идею структуры (поэтому не тратьте впустую комментарии на дизайн БД, пожалуйста!).
То, чего я хочу добиться, - это иметь возможность выбирать ссылки для коллекции, а затем использовать 'TableName' и 'NameColumn' в запросе таблицы 'tableCollectionType' для соответствующих таблиц, чтобы получить листинг в 1 запрос а не два (используя возвращаемые значения).
Идея запроса приведена ниже:
SELECT cl.LinkID, c.Name, ct.Name,
(
SELECT ***THE OBJECT NAME USING 'TableName' and 'NameColumn'
) As ObjectName
FROM tableCollectionLinks cl
INNER JOIN tableCollectionType c ON cl.CollectionID=c.CollectionID
INNER JOIN tableCollectionType ct ON ct.CollectionTypeID=c.CollectionTypeID
WHERE c.CollectionID=1
Есть идеи?
Спасибо,
Стив