我正在尝试从一个数据库中的所有表中获取所有数据。我环顾四周,但找不到任何适合我当前问题的解决方案。
我制作了一个 C# 程序,为程序运行的每一天创建一个表。今天的日期的表名称将类似于 tbl18_12_2015(丹麦日期格式)。
现在,为了制作年度报告,如果我能够从存储这些报告的数据库中的所有表中获取所有数据,我会很高兴。除了格式(tblDD-MM-YYYY)之外,我无法知道会有多少张表或它们的名称。
在思考这样的事情时(这显然行不通)
SELECT * FROM DB_NAME.*
Run Code Online (Sandbox Code Playgroud)
所有表都有相同的列,其中之一是主键,自动递增。
这是一个名为 tbl17_12_2015 的表
ID PERSONID NAME PAYMENT TYPE RESULT TYPE
3 92545 TOM 20,5 A NULL NULL
4 92545 TOM 20,5 A NULL NULL
6 117681 LISA NULL NULL 207 R
Run Code Online (Sandbox Code Playgroud)
这是一个名为 tbl18_12_2015 的表
ID PERSONID NAME PAYMENT TYPE RESULT TYPE
3 117681 LISA 30 A NULL NULL
4 53694 DAVID 78 A NULL NULL
6 58461 MICHELLE NULL NULL 207 R
Run Code Online (Sandbox Code Playgroud)
我想要得到的是这样的东西(来自数据库中的所有表):
PERSONID NAME PAYMENT TYPE RESULT TYPE
92545 TOM 20,5 A NULL NULL
92545 TOM 20,5 A NULL NULL
117681 LISA NULL NULL 207 R
117681 LISA 30 A NULL NULL
53694 DAVID 78 A NULL NULL
58461 MICHELLE NULL NULL 207 R
Run Code Online (Sandbox Code Playgroud)
尝试了一些不同的查询,但没有一个返回此查询,仅返回有关表的大量信息。
提前致谢,祝节日快乐
编辑:将 tbl18_12_2015 第 3 栏标题更正为英语而不是丹麦语
感谢所有试图帮助我解决这个问题的人,但我无法(由于我的技能很可能)让 UNION 工作,所以这就是我决定重构我的数据库的原因。
虽然您可以将表名存储在数据库中并使用动态 sql 将它们联合在一起,但这不是一个好主意,您甚至不应该考虑它 -现在停止!!!!
您需要做的是创建一个具有相同字段的新表 - 并添加一个 ID(自动递增标识列)和一个 DateTime 字段。然后,不必为每天创建一个新表,只需使用日期时间将数据写入该表即可。然后,您可以使用 DateTime 字段来过滤您的结果,无论您想要的是一天、一周、一月、一年、十年等的内容 - 并且您不需要动态 sql - 并且您没有 10,000 个数据库表。
我知道有些人发表了表达相同观点的评论,但是,实际上,这应该是一个答案。