【发布时间】:2011-09-09 08:56:11
【问题描述】:
我有一个数据库,其中包含不同产品的各种表的多个表。这些产品在所有表格中都有唯一的零件编号。
为了搜索所有表,我创建了一个视图,该视图在表中的所有常见字段中使用 UNION ALL。
一旦确定了一个部分,我需要根据数据所在的表选择所有列。视图包含一个字段,该字段指定数据所在的表。
我不确定如何完成最后一部分:
CASE 声明(我目前倾向于这个)
动态SQL(最好不要用这个,会涉及到SELECT *和其他讨厌的东西)
在客户端选择(客户端需要从任意表中选择,需要额外的权限,糟糕的设计?)
替代解决方案?
编辑:实际上,IF 语句是唯一有意义的语句。客户端不需要直接访问表。由于无论如何每个表中的列都不同,因此最好为每个表单独声明。
(我会将问题标记为已回答,但我对此没有足够的声誉)
【问题讨论】:
-
@carlgcode: stackoverflow.com/q/729197/27535 至少
-
这很讨厌,因为您不知道将返回哪些列,您不知道它们将按什么顺序返回,而且这违反了公司编码政策。
-
所以如果你告诉它你需要什么就可以了?
-
是的,通常情况下,这取决于您的具体公司政策
-
你能从一个视图返回不同的列吗?它们不必是静态的吗?
标签: sql sql-server tsql