【发布时间】:2011-11-25 07:31:26
【问题描述】:
有没有办法编写如下查询:
select * from <some number of tables>
...表的数量是未知的?我想避免使用动态 SQL。我想从所有(表)具有特定前缀的表中选择所有行:
select * from t1
select * from t2
select * from t3
...
我不知道t(n) 可能有多少(可能是1,可能是20,等等)t 表列结构不一样。其中一些有 2 列,其中一些有 3 或 4 列。
使用动态 SQL 并不难,但我想知道是否有办法使用 sys.tables 之类的方法来做到这一点。
更新
基本数据库设计说明
N 家公司将注册/登录我的应用程序
每家公司将建立一张 x 列的表
(x 取决于公司的业务类型,可以不同,例如考虑两家公司:一家是木匠,另一家是报纸)
每家公司都将使用我构建的 API 填写自己的表格
我如何处理数据:
我有一个“处理器”,可以是 SQL 或 C# 或其他。
如果一家公司至少有一行,我将在 COMMON 表中生成一条记录。
所以最终的结果都会在一张表中。
来自这 N 个公司中的任何一个的任何人都将登录并看到为他自己的公司过滤的 COMMON 表。
【问题讨论】:
-
如果你的表被称为
t(number here),你真的应该考虑不同的数据库设计。 -
通常情况下,对您实际尝试解决的问题的描述将有助于我们为您提供帮助。
-
您应该将同一类型公司的所有条目放在同一个表中,而不是让每个公司设置自己的表 - 为
Company ID添加一列(您将无论如何想要,我希望)。理想情况下,Common表应该已经存在,其中包含所有公司共有的信息 - 仅将type表用于特定于该业务类型的其他列。 -
X-Zero,你的想法听起来不错,但对我来说不够动态。我不知道我会有多少种公司类型,也就是说我将拥有 M 种类型的公司,而不是 N 种公司
标签: sql sql-server sql-server-2005 sql-server-2008 dynamic