我想知道是否有一种方法可以使用存储在表中的表名/列来查询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
这显然是一个简单的例子,数据类型只是为了帮助显示结构的概念(所以请不要浪费db设计评论!)。
我想要实现的是能够选择集合的链接,然后在相关表中的表'tableCollectionType'查询中使用'TableName'和'NameColumn',以便在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
有什么想法吗?
谢谢, 史蒂夫
答案 0 :(得分:0)
不,没有这样的事情。你可以使用动态sql,但这样做真的没有意义。
答案 1 :(得分:0)
查看sys.tables,Sys.columns,sys.types系统视图。
通过这3个,您可以看到如何选择所需的信息。