基于存储在表本身中的对象名称的SQL查询

时间:2009-11-27 13:23:00

标签: sql sql-server

我想知道是否有一种方法可以使用存储在表中的表名/列来查询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

有什么想法吗?

谢谢, 史蒂夫

2 个答案:

答案 0 :(得分:0)

不,没有这样的事情。你可以使用动态sql,但这样做真的没有意义。

答案 1 :(得分:0)

查看sys.tables,Sys.columns,sys.types系统视图。

通过这3个,您可以看到如何选择所需的信息。